我写了一些代码来写入文件中的特定行,但有时它会覆盖所有内容
def read_write_file(file1, text, line_no):
lines = []
with open(file1, 'r+') as f:
for i, line in enumerate(f):
if i == line_no:
if line != text:
line = text
lines.append(line)
with open(file1, 'w') as f:
for line in lines:
f.write(line)
我试图写给willl的fie看起来像。
from flask import Flask
app = Flask(__name__)
if __name__=='__main__':
app.run()
我想在app = Flask(名称)&之间添加文字。如果名称 =='主要': app.run(),有时它会添加文本而不会覆盖任何内容,但有时当我运行它时,会删除app = Flask( name )之后的所有内容。
答案 0 :(得分:1)
我建议写一个临时文件并执行shutil.move
,你只需要在你要插入的行前面的行:
def read_write_file(file1, start, to_insrt):
from tempfile import NamedTemporaryFile
from shutil import move
with open(file1) as f, NamedTemporaryFile("w",dir=".", delete=False) as tmp:
for line in f:
tmp.write(line)
if line.rstrip() == start:
tmp.write(to_insrt+"\n")
move(tmp.name, file1)
演示:
In [4]: cat test.txt
from flask import Flask
app = Flask(__name__)
if __name__=='__main__':
app.run()
In [5]: read_write_file("test.txt","app = Flask(__name__)","print('hello world')")
In [6]: cat test.txt
from flask import Flask
app = Flask(__name__)
print('hello world')
if __name__=='__main__':
app.run()
在您自己的代码中,您使用'r+'
进行阅读和写作,在您重新打开之前永远不会写,所以没有意义,除非您添加,否则您最终也会使用print('hello world')print('hello world')
这样的行换行,即使这样你也可能会得到不正确的数据,特别是如果你正在编写python代码。此外,如果您使用枚举开始计算从1开始计算的行,则应将1
设置为枚举的开头,否则您将因错误而退出。