1

假设我有一个文本文件

Line 1
Line 2
Line 3

我通读并决定将第 2 行更改为第 2 行。我可以在 Python 中优雅地做到这一点,而无需简单地用更改重写文件吗?我尝试使用 file.seek() 但我并没有真正得到它,也不明白它到底做了什么。

4

2 回答 2

6

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

因为文件是存储介质上的物理字节序列,这意味着您需要重写文件的整个其余部分。换句话说,您需要移过line 2.

实际上,这意味着重写文件,因为这更容易实现。

于 2013-08-10T17:23:17.180 回答
2

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

就地编辑.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

数据.txt:

Line 1
Line 2
Line 3

要运行它:

python inplace-edit.py data.txt

生成的 data.txt:

Line 1
Line two
Line 3
于 2013-08-10T17:52:23.357 回答