Python: 如何输出到文件而不是打印

Python: How to output to file instead of printing

这里是新手!

我有一个包含fasta的文本文件headers(大约1.5K;abc.txt):

>CP008746  location=complement(3239792..3241504),organism=Methanosarcina barkeri   CM1,definition=methyl-coenzyme M reductase alpha subunit McrA
>CP009530  location=complement(2979486..2981198),organism=Methanosarcina barkeri 227,definition=Methyl coenzyme M reductase alpha subunit

我想删除除第一部分以外的所有内容:

>CP008746
>CP009530

假期一直在学习Python,所以写了(Python3.7.6):

with open("abc.txt","r+") as data_file:
    for line in data_file:
        data=line.split()
        del data[1:]
        print(data)

这给了我想要的输出,但我不确定如何将结果直接输出到新文件 - 我试过 print(data, file=data_file),但它只输出了我的几行所有的。我已经通过 copy-pasting 手动创建一个新文件来解决这个问题,但是必须有一种方法可以自动输出所有内容,对吗?

非常感谢任何帮助,如果已经回答,我深表歉意...!

谢谢!

你可以试试这个。许多解决方案都是可能的,这里是一个:


with open("abc.txt","r+") as data_file:
    list_of_elements=[] # creating an empty list to store all elements interesting to you
    for line in data_file:
        data=line.split()
        del data[1:]
        print(data)
        list_of_elements.append(str(data)) # appending the list with the elements

with open('file_to_write.txt', 'w') as f: # writing to a file
    for line in list_of_elements:
        f.write(line)
        f.write('\n') # escape line at each element

如果你在 linux 运行 你的程序是这样的:
python3 file.py > output.txt
或者将您的数据从 python 写入文件:

with open("output.txt", "w") as f:
    f.write(data)