1
我需要生成一個臨時文件以用新內容替換系統文件。生成臨時文件以替換實際文件
我的代碼,它的作品,但我想,如果有一些模塊,自動這樣做,沿着線:
with tempfile.NamedTemporaryFileFor('/etc/systemfile', delete=False) as fp:
...
這將創建一個具有相同權限的臨時文件,原始文件的所有者和相同的文件夾中。然後我會寫我的新內容,並用原子替換原來的系統文件。哎呀,上下文管理器可以在文件關閉時爲我做替換!
我當前的代碼是:
with tempfile.NamedTemporaryFile(delete=False, dir='/etc') as fp:
tempfilename = fp.name
fp.write('my new contents')
orig_stat = os.stat('/etc/systemfile')
os.chown(tempfilename, orig_stat.st_uid, orig_stat.st_gid)
os.chmod(tempfilename, orig_stat.st_mode)
os.replace(tempfilename, '/etc/systemfile')