假设我有一个文本文件
Line 1
Line 2
Line 3
我通读并决定将第 2 行更改为第 2 行。我可以在 Python 中优雅地做到这一点,而无需简单地用更改重写文件吗?我尝试使用 file.seek() 但我并没有真正得到它,也不明白它到底做了什么。
文件是一个字节序列。如果要更改中间需要更多或更少字节来表示的内容,则文件的其余部分需要调整大小。
因为文件是存储介质上的物理字节序列,这意味着您需要重写文件的整个其余部分。换句话说,您需要移过line 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