如何从特定行读取文件并写入输出?

问题描述:

我想从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) 

这两种解决方案都避免将整个文件读入内存,如果文件很大,这很重要。

+0

我可以用这个多行间隔(121,136)蚂蚁后者(184,206)? –

+0

不,不幸的是,这种方法适用于单一范围,稍微不同的方法虽然可行,但我会更新。 –