我想在一个文件中做一些更改。为此我正在做一个临时文件,我写了所有想要的更改的内容,最后我尝试用这个临时文件替换原始文件。
创建临时文件,它看起来像我预期的那样,但替换操作不起作用。
这是我的代码失败:
with tempfile.NamedTemporaryFile(mode='w', prefix=basename, dir=dirname, delete=False) as temp, open(file_path, 'r') as f:
for line in f:
temp.write(line + " test")
os.replace(temp.name, file_path)
但这给了我一个错误:
PermissionError:[WinError 32]进程无法访问该文件 因为它正被另一个进程使用
我使用'替换'功能有误吗?
答案 0 :(得分:1)
你的命令os.replace(temp.name,file_path)必须不在。
with tempfile.NamedTemporaryFile(mode='w', prefix=basename, dir=dirname, delete=False) as temp, open(file_path, 'r') as f:
for line in f:
temp.write(line + " test")
os.replace(temp.name, file_path)
答案 1 :(得分:1)
当您使用'在'内部调用replace()时该文件仍处于打开状态,因为您仍然在'范围内。'。
一旦你离开''该文件现已关闭,您现在可以用os.replace()替换。
试试吧。
with tempfile.NamedTemporaryFile(mode='w', prefix=basename, dir=dirname, delete=False) as temp, open(file_path, 'r') as f:
for line in f:
temp.write(line + " test")
os.replace(temp.name, file_path)