我一直在尝试获取输入文件的某些行,所以我使用文件“inputfile”来获取偶数行。
f= open('inputfile.txt', 'r')
for i,line in enumerate(f):
if i%2==0:
print line
这样我获得了打印的行,但是,我不知道如何将这些结果行发送到输出文件,因为当我最初尝试这样做时,我只是获得了第一行。我能做些什么?
我一直在尝试获取输入文件的某些行,所以我使用文件“inputfile”来获取偶数行。
f= open('inputfile.txt', 'r')
for i,line in enumerate(f):
if i%2==0:
print line
这样我获得了打印的行,但是,我不知道如何将这些结果行发送到输出文件,因为当我最初尝试这样做时,我只是获得了第一行。我能做些什么?
仅获得偶数行的最有效方法是仅使用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)
我认为 Martijn/alKid 的答案是您应该使用的,但为了完整起见,我将补充说您可以按原样运行脚本,将行打印到标准输出(即控制台,在这种情况下),然后将输出重定向到一个文件:python my_script.py > output.txt
你的方法很好用,恭喜。如果您想将结果写入另一个文件,您可以使用与读取它相同的方式进行操作,只是略有不同。
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: