在输出文件中写入循环结果

时间:2013-10-24 22:01:09

标签: python

我一直在尝试获取输入文件的某些行,所以我使用文件“inputfile”来获得偶数行。

f= open('inputfile.txt', 'r')
for i,line in enumerate(f):
     if i%2==0:
         print line

这样我获得了打印的行,但是,我不知道如何将这些结果行发送到输出文件,因为当我最初尝试这样做时,我刚刚获得了第一行。我能做什么?

3 个答案:

答案 0 :(得分:3)

获得偶数行的最有效方法是使用itertools.islice()并仅选择每个第二项:

from itertools import islice

with open('inputfile.txt', 'r') as infile, open('outputfile.txt', 'w') as outfile:
    outfile.writelines(islice(infile, 0, None, 2))

使用您的方法也可以正常工作,前提是您在循环中编写

with open('inputfile.txt', 'r') as infile, open('outputfile.txt', 'w') as outfile:
    for i, line in enumerate(f):
        if i % 2 == 0:
            outfile.write(line)

答案 1 :(得分:0)

你的方法很棒,恭喜你。如果你想把结果写到另一个文件,你可以用你读它的方式来做,只是略有不同。

input_file = ('inputfile.txt', 'w')
output_file = ('outputfile.txt', 'w')
for i,line in enumerate(input_file):
     if i%2==0:
         output_file.write(line)  

另外,所以你不要忘记在程序结束时关闭文件,建议使用with语句,如martijn所示

with open('inputfile.txt', 'r') as input_file, open('outputfile.txt', 'w') as output_file:

答案 2 :(得分:0)

我认为Martijn / alKid的答案是您应该使用的,但为了完整起见,我会补充说您可以按原样运行脚本,将行打印到标准输出(即控制台,在这种情况下),只需将输出重定向到文件:python my_script.py > output.txt