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')