gpt4 book ai didi

python - 将行写入文件python

转载 作者:太空宇宙 更新时间:2023-11-04 10:19:41 24 4
gpt4 key购买 nike

我在 python 中有一个非常简单的脚本,它运行一个用户定义的函数(异类),该函数将非常大的文件上的序列(文本字符串)连接在一起,一次连接 2 个序列(行)。无论如何,正如我所写的那样,它会打印到屏幕上,但我想将所有输出写入一个文件。

f = open ("new", "r")
while True:
line1 = f.readline()
line1a = line1.split()
line2 = f.readline()
line2a =line2.split()
if not line2: break

tri="".join ([hetero(b1, b2) for (b1, b2) in zip(line1a[2], line2a[2])])

print line1a[1]+"_"+line1a[0],tri

这只是将脚本的结果打印到终端。所以我尝试将结果(从打印命令“line1a[1]+.....”)写入另一个打开的文件(附加到脚本末尾):

out_file = open ("out.txt", "w")
out_file.write(line1a[1]+"_"+line1a[0],tri)
out_file.close()

但是当然不行。我不明白为什么......我是否需要打开文件与文件一起写入以供读取,以便它在 While 循环之外?棘手的是,脚本每次在整个文件中读取两行,并在一行中打印 ID 信息和序列——我想将所有这些结果打印到一个文件中。

我确信这是一个简单的修复,但我不经常使用 python,而且总是发现文件系统 i/o 很难处理。

最佳答案

每次打开文件进行写入时,它都会被截断。如果要追加,可以在开头打开并保持打开状态,或者改为以追加模式打开(a 而不是 w)。

此外,您应该使用 with 语句:

with open('new', 'r') as f, open('out.txt', 'w') as out:
while True:
...

这将在 block 结束后自动为您调用close

您还可以清理“读取一对行并将它们拆分”的代码。而不是 while True:

from itertools import izip
pairs = ((l1.split(), l2.split()) for l1, l2 in izip(f, f))
for line1a, line2a in pairs:
tri = ...

请注意,您要使用 izip 而不是 zip ,否则它会立即将整个文件读入内存。

关于python - 将行写入文件python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33041619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com