我想在一个文件中做一些更改。为此,我正在制作一个临时文件,其中写入了所有需要的更改的内容,最后,我尝试用此临时文件替换原始文件。

临时文件已创建,看起来像我预期的那样,但是替换操作不起作用。

这是我的代码失败:

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]进程无法访问文件
  因为它正在被另一个进程使用


我对“替换”功能的使用是错误的吗?

最佳答案

您的命令os.replace(temp.name,file_path)必须与with分开。

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)

08-26 21:18
查看更多