【问题标题】:How to make files with a loop in python?如何在python中使用循环制作文件?
【发布时间】:2021-04-07 19:35:35
【问题描述】:

我有一个 fasta 文件,我想为每个序列制作单独的文件。每个序列的文件名应该是唯一的,所以我使用了序列的描述。它给出了一个错误:output=open(header,"w") 错误说:OSError: [Errno 22] Invalid argument: '>g1.fasta' 代码:

    in_file = open("test.fasta","r")
lines=in_file.read().strip()

lines=lines.replace("\r\n","\n")
in_file.close()

sequences=lines.split("\n>")

in_file.close()
print(sequences)

for sequence in sequences:
    elements=sequence.split("\n")
    header = elements[0]
    seq = "".join(elements[1:])
    name=header+".fasta"
    output=open(name,"w")
    output.write(seq)
    output.close()

【问题讨论】:

  • 请提供一个test.fasta文件的例子

标签: python python-2.7 loops for-loop


【解决方案1】:

假设 test.fasta 内容为:

>SEQUENCE_1
MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG
LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK
IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL
MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGLEKKTEDFAAEVAAQL
>SEQUENCE_2
SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI
ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH

我建议这样做:

with open('test.fasta', 'r') as file:
    raw = file.read()

clean = raw.strip().replace('\r\n', '\n').split('>')
sequences = [sequence for sequence in clean if sequence]

print(sequences)

for sequence in sequences:
    elements = sequence.split("\n")
    header = elements[0]
    seq = ''.join(elements[1:])
    name = header + '.fasta'
    with open(name, 'w') as output:
        output.write(seq)

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多