如何从特定行读取文件并写入输出?
问题描述:
我想从output.txt的线121-136读取并保存在同一格式zxyr.txt.File看起来是这样的:如何从特定行读取文件并写入输出?
>ZYXR //74
-6.440208621086e+03 -4.758666382870e+03 -3.995858566350e+03 -4.934315690511e+03 -5.049765912718e+03
-4.323241464318e+03 -4.246930447741e+03 -3.836596391287e+03 -3.357569224670e+03 -2.955821531683e+03
-2.579438902492e+03 -2.291910045847e+03 -1.831407086906e+03 -1.630707014227e+03 -1.376537942484e+03
我的代码
from __future__ import with_statement
inFile = open('output.txt','r')
outFile = open('zxyr.txt', 'w')
lines=[121, 136]
i=0
for line in inFile:
if i in lines:
counter = str(int(inFile.read().strip())
outFile.seek(0)
outFile.write(counter)
i+=1
但
File "ex1.py", line 12
outFile.seek(0)
^
SyntaxError: invalid syntax
我的代码有什么问题?
答
我想你将不得不阅读所有以前的行。做什么:
startline = 121
endline = 136
with open('output.txt','r') as inFile:
lines = inFile.readlines()[startline:endline+1]
with open(zxyr.txt, 'w') as outFile:
outFile.writelines(lines)
答
如下你可以写工整地使用islice
线的一个范围:
from itertools import islice
with open("output.txt", "r") as f_input, open("zxyr.txt", "w") as f_output:
f_output.writelines(islice(f_input, 121+1, 136+1))
要一对夫妇范围的工作,你可以采取以下方法:
with open("output.txt", "r") as f_input, open("zxyr.txt", "w") as f_output:
for line_number, line in enumerate(f_input, start=1):
if (121 <= line_number <= 136) or (184 <= line_number <= 206):
f_output.write(line)
这两种解决方案都避免将整个文件读入内存,如果文件很大,这很重要。
我可以用这个多行间隔(121,136)蚂蚁后者(184,206)? –
不,不幸的是,这种方法适用于单一范围,稍微不同的方法虽然可行,但我会更新。 –