繁体   English   中英

如何写入文件的特定行?

[英]How to write to a specific line of a file?

假设我有一个文本文件

Line 1
Line 2
Line 3

我通读了一下,决定将2号线更改为2号线。 我可以在Python中优雅地做到这一点,而不必简​​单地用更改重写文件吗? 我尝试使用file.seek(),但是它并没有真正意义,也不知道它到底能做什么。

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

因为文件是存储介质上字节的物理序列,所以这意味着您需要重写文件的其余部分 换句话说,您需要移至第二line 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM