Python 试图用创建的临时文件替换原始文件
我想在一个文件中做一些更改。为此,我正在编写一个临时文件,其中我写入了所有想要更改的内容,最后我尝试用这个临时文件替换原始文件 临时文件已创建,看起来和我预期的一样,但替换操作不起作用 这是我失败的代码:Python 试图用创建的临时文件替换原始文件,python,python-3.x,file,temporary-files,Python,Python 3.x,File,Temporary Files,我想在一个文件中做一些更改。为此,我正在编写一个临时文件,其中我写入了所有想要更改的内容,最后我尝试用这个临时文件替换原始文件 临时文件已创建,看起来和我预期的一样,但替换操作不起作用 这是我失败的代码: with tempfile.NamedTemporaryFile(mode='w', prefix=basename, dir=dirname, delete=False) as temp, open(file_path, 'r') as f: for line in f:
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 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)
在“with”内调用replace()时,文件仍处于打开状态,因为您仍在“with”的范围内 一旦退出“with”,文件现在已关闭,您现在可以用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)
这个错误似乎不言自明。您需要在写入临时文件后,在替换之前关闭临时文件。不要使用
os.replace
。使用os.replace
仅在源设备和目标设备位于同一设备上时才有效。os.replace
仍包含在中,tempfile(…)为…
,这意味着您的tempfile仍处于打开状态。正如错误所提示的,您不能在文件仍在使用时更改它。去掉最后一行的缩进,你就没事了。