将输出列表写入文件

时间:2012-07-25 15:15:29

标签: python io

我正在尝试将输出列表写入文件,但只从列表中获取实际写入文件的最后一行。如何更改我的代码以便捕获所有内容?

import os

slices = [(0,3), (12,28), (29,31), (32,33), (34,38), (130,144), (39,41), (32,33), (42,55), (58,64), (65,72), (73,74), (75,78), (79,84), (99,102)]
File = r"E:\file.txt"
outfile = r"E:\file_output.txt"

with open(File) as sourcefile:

for line in sourcefile: 
    result = [line[slice(*slc)] for slc in slices]

myfile = open(outfile, 'w')

for lines in result:
    myfile.write("%s\t" % lines)

myfile.close()

2 个答案:

答案 0 :(得分:2)

你的for循环每次重复都会重新分配result。因此,在循环结束时result仍然只有一个列表。在循环之前分配myfile,并将myfile.write语句放在循环中。

myfile = open(outfile, 'w')
for line in sourcefile: 
    result = [line[slice(*slc)] for slc in slices]
    myfile.write("%s\t" % result)

或者,如果您想要列出所有结果,可以使用+=获取列表列表,如

result += [line[slice(*slc)] for slc in slices] 

答案 1 :(得分:1)

每次在“for sourcefile”块中进行迭代时,都会覆盖“结果”列表。这就是为什么你最终只得到存储在“结果”

中的最后一行

要解决此问题,您可以扩展列表理解并完全删除for循环:

result = [line[slice(*slc) for slc in slices for line in sourcefile]