如何在 python 中制作带循环的文件?

How to make files with a loop in python?

我有一个 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内容是:

>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)