有些场景不是想‘拷一份’,而是想把新文件直接顶上去。os.replace() 这时候比先 unlink() 再写更顺手,也少一点中间态。
环境:Python 3.8+,只用标准库。保存为 replace-demo.py:
from pathlib import Path
import os
old = Path('config.txt')
tmp = Path('config.txt.tmp')
old.write_text('old value\n', encoding='utf-8')
tmp.write_text('new value\n', encoding='utf-8')
os.replace(tmp, old)
print(old.read_text(encoding='utf-8').strip())
print(tmp.exists())
我更喜欢把它当成‘安全一点的覆盖’来用。要是只是改个内容,这个比手工挪来挪去省心。