对于此示例,您可能只处理一个序列,因此此解决方案将适用于您正在寻找的内容:
#!/usr/bin/python
import sys
if len(sys.argv) < 2:
print "usage: finalmyscript.py infile.txt"
sys.exit(1)
fname = sys.argv[1]
handle = open( fname )
for line in handle:
# Only the lines that are identifier lines(Aka, start with >)
if line[0] == '>':
# We could use print, but sys.stdout.write is just as easy to
# write to the terminal without a newline at the end
sys.stdout.write( line.replace( '\n', ' ' ) )
else:
sys.stdout.write( line.replace( '\n', '' ) )
handle.close()
我留给你弄清楚如何修改上面的代码来处理单个文件中的多个序列。
如果您稍后要进行更多的生物信息学处理,您应该查看Biopython项目,这将使事情变得更容易。
这是一个使用 Biopython 的 SeqIO 模块很容易解决上述问题的示例
#!/usr/bin/python
from Bio import SeqIO
import sys
if len(sys.argv) < 2:
print "usage: finalmyscript.py infile.txt"
sys.exit(1)
fname = sys.argv[1]
for seq in SeqIO.parse( fname, 'fasta' ):
print ">" + seq.id + " " + str(seq.seq)