我可以进入文件并使用 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/