python - 如何使用枚举读取和更改 python 中的特定行?

标签 python file-io

我可以进入文件并使用 enumerate 读取该行但我不知道如何更改线路。

fileinput方法覆盖open()中的文件和append方法只会附加到文件末尾。

我想仅追加和覆盖文件中的某一行,同时保持文件的其余部分完好无损。

with open('test2.py', 'r+') as f:
    for i, line in enumerate(f):
        if i == 4:
            if line != '2':
                line = '2'
                f.write(line)
            print line

我在上面的代码中没有收到任何错误,它只是打印 '2'在终端中,但它不会更改 test2.py 中的文本行至'2' .

test2.py 将是

#
#
#
'''
4
'''
#

我需要将 4 更改为 2

最佳答案

“line = '2'”仅表示将内存中的变量更改为'2'。文件内容保持不变。然后,将“2”写入 test2.py。它只是将“2”附加到 test2.py。

我以为写入用“r+”打开的文件时会抛出错误,但事实并非如此。它只是附加的。

可能的解决方案(虽然效率不高):

lines = []
with open('test2.py', 'r+') as f:
   for i, line in enumerate(f):
      if i == 4:
         if line != '2':
            line = '2'
      lines.append(line)

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

之前:

12312312
123123123


1231231231

之后:

12312312
123123123


2

关于python - 如何使用枚举读取和更改 python 中的特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33841257/

相关文章:

python - Pandas 数据框的条件选择

删除文本文件中特定行的Python程序

node.js - 在 Node.js 中事务性地写入文件

python - 何时使用 Serializer 的 create() 和 ModelViewset 的 perform_create()

Python,在 python 代码中处理 Py_buildValue

python - 安装Python 2.7.14 : Path to pip not recognized 时出现问题

java - 使用 Unicode 文件路径

linux - 将文本插入文本文件

Php代码显示偏移量错误

batch-file - 在不应该获取的地方获取 forfiles 帮助页面