如何在 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)
我有一个 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)