我想在一个文件中做一些更改。为此,我正在制作一个临时文件,其中写入了所有需要的更改的内容,最后,我尝试用此临时文件替换原始文件。
临时文件已创建,看起来像我预期的那样,但是替换操作不起作用。
这是我的代码失败:
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)