【问题标题】:Python: How to output to file instead of printing [duplicate]Python:如何输出到文件而不是打印[重复]
【发布时间】:2022-01-05 16:48:22
【问题描述】:

这里是新手!

我有一个包含 fasta 标头的文本文件(大约 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),但它只输出我的几行而不是全部。我已经通过手动复制粘贴到一个新文件来解决这个问题,但是必须有一种方法可以自动输出所有内容,对吧?

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

谢谢!

【问题讨论】:

  • 该代码不会为您提供所需的输出。而不是>CP008746,而是打印['>CP008746']
  • @KellyBundy 你是对的,但由于我还没有想出如何在不将标题转换为列表的情况下做我想做的事,['>CP008746'] 对我来说仍然是一个可以接受的输出:D 答案下面帮助我将所有内容输出到一个单独的文件中,然后我可以将其更改为正确的输出!

标签: python output


【解决方案1】:

你可以试试这个。有很多解决方案,这里有一个:


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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-22
      • 2011-08-21
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多