You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python开发个人备份工具点击备份报PY_VAR0路径不存在错误

问题原因

你报错的核心原因是没有正确获取Tkinter StringVar 存储的实际路径值:

  • Tkinter的StringVar是专门用来绑定UI组件的特殊变量对象,直接对它做str()转换只会得到类似PY_VAR0的内部标识字符串,不是你存在里面的路径值,需要调用.get()方法才能拿到实际存储的文本内容。
  • 同时你的备份函数里还有两处逻辑错误:目标路径存在判断逻辑写反、copytree目标路径参数错误。
修复方案

替换你的backup_func函数为以下代码即可解决报错:

def backup_func():
    global src_choosed, dest_choosed
    # 调用.get()方法获取StringVar里存储的实际路径
    src_path = src_choosed.get()
    dest_path = dest_choosed.get()
    
    folder = os.path.basename(src_path)
    # 用os.path.join拼接路径适配不同操作系统的路径分隔符
    new_dest = os.path.join(dest_path, folder)
    
    # 修正判断逻辑:目标路径已经存在的话先删除旧目录,否则copytree会触发目录已存在报错
    if os.path.exists(new_dest):
        shutil.rmtree(new_dest)
    
    # 正确的拷贝目标是拼接后的子目录路径,不是原始目标根路径
    shutil.copytree(src_path, new_dest)
    m_box.showinfo("提示", "备份完成")
额外优化建议(可选)
  • 首次运行如果path.pkl文件不存在会直接触发报错,建议修改读取pickle的代码处理首次运行场景:
path_list = []
if os.path.exists("path.pkl"):
    with open("path.pkl","rb") as readFile:
        path_list = pickle.load(readFile)
  • 所有文件读写操作建议使用with语法,自动管理文件句柄避免资源泄漏。

内容的提问来源于stack exchange,提问作者Ganesha Gamer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 17:15:07