我有一个文件,我需要在特定的行上写一些内容。我知道哪些行,我想覆盖该行的内容。
例如,我有一个100行文本文件,我想专门写到第70行。我知道我可以逐行读取并保留一个计数器,当我到达第70行时,我可以写出那行我需要。我也可以读取文件的全部内容,将其拆分为列表,覆盖我需要的位置并回写。
我正在寻找更简单的东西,例如:
somelibrary.writeline(file, 70, "Blah blah")
Python中有这样的东西吗?
答案 0 :(得分:3)
除非新行与完全一样长,否则你最好选择重写文件。
最简单的方法是使用fileinput
module:
import sys, fileinput
for count, line in enumerate(fileinput.input(filename, inplace=True)):
if count == 69: # Python counts from 0
line = newvalue
sys.stdout.write(line)
这会创建文件的备份,并输出到 new 文件替换旧文件。写入sys.stdout
写入而不是新文件(替代方法是使用print
,但line
仍然包含换行符。
答案 1 :(得分:0)
在您的线长度始终相同的特殊情况下,您可以使用
with open('myfile.txt', 'rb+') as f:
f.seek(FIXED_LINE_LENGTH * line_number)
f.write(new_line)