在python中写入特定行号的简单有效方法

时间:2013-11-18 18:21:16

标签: python file-io

我有一个文件,我需要在特定的行上写一些内容。我知道哪些行,我想覆盖该行的内容。

例如,我有一个100行文本文件,我想专门写到第70行。我知道我可以逐行读取并保留一个计数器,当我到达第70行时,我可以写出那行我需要。我也可以读取文件的全部内容,将其拆分为列表,覆盖我需要的位置并回写。

我正在寻找更简单的东西,例如:

somelibrary.writeline(file, 70, "Blah blah")

Python中有这样的东西吗?

2 个答案:

答案 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)