如何将python生成的输出存储在txt-fi中

2024-09-30 20:25:42 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有这样一个代码:

disfile = open('filename.txt')
for line in disfile:
    list = line.split()
    id = list[4]
    if id == 'sequence':
        name = list[0]
        Sequence = list[5]
    elif id == 'disorder':
        Disorder = list[5]
        print name, ' ', 'Sequence:',' ', Sequence,' ', 'Disorder:',' ', Disorder

然后所有的数据和序列都在python编辑器或IDLE中打印出来。但我想生成一个包含所有已打印内容的文件。谁能帮帮我吗!在

所以我的文件是这样的:

101M : A : sequence MVLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDRVKHLKTEAEMKASEDLKKHGVTVLTALGAILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISEAIIHVLHSRHPGNFGADAQGAMNKALELFRKDIAAKYKELGYQG 101M : A : secstr HHHHHHHHHHHHHHGGGHHHHHHHHHHHHHHH GGGGGG TTTTT SHHHHHH HHHHHHHHHHHHHHHHHHTTTT HHHHHHHHHHHHHTS HHHHHHHHHHHHHHHHHH GGG SHHHHHHHHHHHHHHHHHHHHHHHHTT
101M : A : disorder ---------------------------------------------------------------------------------------------------------------------------------------------------------- 102L : A : sequence MNIFEMLRIDEGLRLKIYKDTEGYYTIGIGHLLTKSPSLNAAAKSELDKAIGRNTNGVITKDEAEKLFNQDVDAAVRGILRNAKLKPVYDSLDAVRRAALINMVFQMGETGVAGFTNSLRMLQQKRWDEAAVNLAKSRWYNQTPNRAKRVITTFRTGTWDAYKNL 102L : A : secstr HHHHHHHHH EEEEEE TTS EEEETTEEEESSS TTTHHHHHHHHHHTS TTB HHHHHHHHHHHHHHHHHHHHH TTHHHHHHHS HHHHHHHHHHHHHHHHHHHHT HHHHHHHHTT HHHHHHHHHSSHHHHHSHHHHHHHHHHHHHSSSGGG
102L : A : disorder -------------------------------------------------------------------------------------------------------------------------------------------------------------------XX 102M : A : sequence MVLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDRFKHLKTEAEMKASEDLKKAGVTVLTALGAILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISEAIIHVLHSRHPGNFGADAQGAMNKALELFRKDIAAKYKELGYQG 102M : A : secstr HHHHHHHHHHHHHHGGGHHHHHHHHHHHHHHH GGGGGG TTTTT SHHHHHH HHHHHHHHHHHHHHHHHHTTTT HHHHHHHHHHHHHTS HHHHHHHHHHHHHHHHHH TTT HHHHHHHHHHHHHHHHHHHHHHHHHT
102M : A : disorder ---------------------------------------------------------------------------------------------------------------------------------------------------------- 103L : A : sequence MNIFEMLRIDEGLRLKIYKDTEGYYTIGIGHLLTKSPSLNSLDAAKSELDKAIGRNTNGVITKDEAEKLFNQDVDAAVRGILRNAKLKPVYDSLDAVRRAALINMVFQMGETGVAGFTNSLRMLQQKRWDEAAVNLAKSRWYNQTPNRAKRVITTFRTGTWDAYKNL 103L : A : secstr HHHHHHHHH EEEEEE TTS EEEETTEE HHHHHHHHHHHHTS TTB HHHHHHHHHHHHHHHHHHHHH TTTHHHHHHS HHHHHHHHHHHHHHHHHHHHT HHHHHHHHTT HHHHHHHHHSSHHHHHSHHHHHHHHHHHHHSSSGGG
103L : A : disorder ----------------------------------XXXXXX-----------------------------------------------------------------------------------------------------------------------------XX

在我添加代码之后:

导入系统 系统标准输出=open('outputfile','w') 打印“test”#“test”将在输出文件中

因此,我的代码变成:

^{pr2}$

它确实生成了一个文件,但是只有最后一个序列出现在文件中,发生了什么?在


Tags: 文件代码nameidline序列openlist
2条回答

它只保存最后一个序列,因为每次迭代都会再次打开文件并覆盖。你应该在循环之前打开它。在

但我建议使用书写或打印“V形”格式。i、 电子邮箱:

f = open('outputfile', 'w')
for .....
    print >>f,name, ' ', 'Sequence:',' ', Sequence,' ', 'Disorder:',' ', Disorder

您可以写入使用write()打开的文件,也可以重定向stdout,这样通过print的所有输出都将转到一个文件:

import sys
sys.stdout = open('outputfile', 'w')
print 'test' #'test' will be in the outputfile

您也可以使用>作为注释中提到的Blender导入文件,但是这只适用于使用shell而不是Python编辑器或IDLE的情况。在

替换stdout不是生产代码中应该做的事情,因为它是全局替换的,即代码外部的其他函数的输出也将在文件中结束。如果确实要替换原始文件sys.stdout,则可能需要保存它。在

相关问题 更多 >