📜  在 python 中编辑文本文件中的特定行(1)

📅  最后修改于: 2023-12-03 15:37:27.389000             🧑  作者: Mango

在 Python 中编辑文本文件的特定行

在编写 Python 脚本时,需要经常处理文件,其中包括读取、写入和编辑文本文件。如果您想修改文本文件中的特定行,Python 可以提供多种方法轻松实现。

1. 使用 fileinput 模块

fileinput 模块是一个非常有用的模块,它可以让你轻松地将文件作为一个单一的文件或一组文件进行迭代处理。

import fileinput

filename = 'test.txt'
lineno = 2

for line in fileinput.input(filename, inplace=True):
    if fileinput.lineno() == lineno:
        line = "New line\n"
    print(line, end='')

以上代码可以打开 test.txt 文件,并将第二行更改为指定的行内容。inplace=True 参数表示对源文件进行直接更改,而 print 语句通过其第二个参数 end='' 来防止在每行的末尾添加换行符。

2. 使用 linecache 模块

linecache 模块是另一个方便读取文件行的模块。

import linecache

filename = 'test.txt'
lineno = 2

with open(filename, 'r') as f:
    lines = f.readlines()

lines[lineno-1] = "New line\n"

with open(filename, 'w') as f:
    f.writelines(lines)

上述代码将打开 test.txt 文件,读取所有行,修改指定行的内容,然后将其写回文件中。

3. 使用 StringIO 模块

StringIO 模块允许您创建 "文件对象",这些对象可以像文件一样进行处理。

from io import StringIO

filename = 'test.txt'
lineno = 2

with open(filename, 'r') as f:
    contents = f.read()

f = StringIO(contents)
lines = f.readlines()
lines[lineno-1] = "New line\n"
f.seek(0)

with open(filename, 'w') as f:
    for line in lines:
        f.write(line)

在以上代码中,我们打开 test.txt 并读取其内容。然后,我们在内存中使用 StringIO 对象复制该内容,并将其的行作为 Python 列表进行处理。修改指定的行内容,然后将所有更改写回源文件。

以上介绍了几种不同的在 Python 中编辑文本文件中的特定行的方法,您可以根据需要选择最适合您的解决方案。

请注意: 在此示例中,我们假设您有适当的权限来读取和写入指定的文本文件。如果您遇到权限问题,请确保在文件系统中为源文件设置适当的权限。