Python自复制自删除脚本单次运行、路径偏移问题修复问询
自复制可重复执行Python脚本实现方案
完整可运行代码
import os # 读取自身绝对路径信息,不依赖执行时的工作目录 self_full_path = os.path.abspath(__file__) self_dir = os.path.dirname(self_full_path) self_filename = os.path.basename(self_full_path) # 同目录下生成临时文件路径,用隐藏前缀避免冲突 tmp_file_path = os.path.join(self_dir, f".tmp_{self_filename}") # 提前将全部脚本内容读入内存,删除原文件不影响后续逻辑 with open(self_full_path, "r", encoding="utf-8") as f: script_content = f.read() # 1. 写入临时副本到原文件同目录 with open(tmp_file_path, "w", encoding="utf-8") as f: f.write(script_content) # 2. 删除原文件 os.remove(self_full_path) # 3. 临时文件重命名为原文件名,完成替换 os.rename(tmp_file_path, self_full_path) # 此处可添加其他自定义业务逻辑 print("执行完成,副本已刷新")
问题修复与需求匹配说明
- 路径问题修复:通过内置变量
__file__获取脚本自身的真实绝对路径,完全不依赖执行命令时的工作目录,副本始终生成在脚本本身所在的目录,不会出现生成到上级目录的问题 - 重复执行支持:执行流程完全符合要求的「写临时副本→删原文件→重命名临时文件」逻辑,代码提前读入内存,全程没有文件命名冲突,可无限次重复运行
- 可移植性优化:所有路径操作使用
os.path标准库方法实现,兼容全操作系统,无硬编码的路径、文件名,脚本可任意重命名、放置在任意目录下运行
内容的提问来源于stack exchange,提问作者TheKaushikGoswami
相关产品推荐
相关产品推荐

