def safe_replacement(path, *open_args, mode=None, **open_kws):
path = str(path)
if mode is None:
try: mode = stat.S_IMODE(os.lstat(path).st_mode)
except OSError: pass
open_kws.update( delete=False,
dir=os.path.dirname(path), prefix=os.path.basename(path)+'.' )
if not open_args: open_kws['mode'] = 'w'
with tempfile.NamedTemporaryFile(*open_args, **open_kws) as tmp:
try:
if mode is not None: os.fchmod(tmp.fileno(), mode)
yield tmp
if not tmp.closed: tmp.flush()
os.rename(tmp.name, path)
finally:
try: os.unlink(tmp.name)
except OSError: pass
utils.py 文件源码
python
阅读 42
收藏 0
点赞 0
评论 0
评论列表
文章目录