如何写入文件的特定行?

时间:2013-08-10 17:20:17

标签: python file

假设我有一个文本文件

Line 1
Line 2
Line 3

我仔细阅读并决定将第2行更改为第2行。我是否可以在Python中优雅地执行此操作而无需仅使用更改重写文件?我尝试使用file.seek(),但我并没有真正得到它,也不知道它究竟是什么。

2 个答案:

答案 0 :(得分:6)

文件是一个字节序列。如果要在中间更改需要更多或更少字节来表达的内容,则文件的其余部分需要调整大小。

因为文件是存储介质上的物理字节序列,这意味着您需要重写文件的整个 rest 。换句话说,您需要移动line 2之后的所有内容。

在实践中,这意味着重写文件,因为这更容易实现。

答案 1 :(得分:2)

您需要fileinput模块提供的就地编辑功能:

inplace-edit.py:

import sys
import fileinput

for line in fileinput.input(sys.argv[1], inplace=1):
    line = line.rstrip() # Remove the new line
    if line == 'Line 2':
        line = 'Line two'
    print line

data.txt中:

Line 1
Line 2
Line 3

运行它:

python inplace-edit.py data.txt

结果data.txt:

Line 1
Line two
Line 3