【发布时间】:2016-02-05 11:13:17
【问题描述】:
我需要生成一个临时文件来用新内容替换系统文件。
我有代码,它可以工作,但我在想是否有一些模块可以自动执行此操作,如下所示:
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')
【问题讨论】:
标签: python-3.x atomic temporary-files