Python编写游戏翻译补丁移动选中文件提示找不到files报错如何解决
问题修复方案
你的代码存在4处核心错误:
- 调用
shutil.move时给变量名files、destination加了引号,导致Python把变量名当成了字面量字符串去匹配文件,自然找不到名为files的文件 filedialog.askopenfilenames返回的是包含所有选中文件路径的元组,不能直接作为shutil.move的第一个参数,需要遍历每个文件单独执行移动操作- 未选中文件的判断逻辑错误:
askopenfilenames未选择文件时返回的是空元组,不是空字符串'',原有预警逻辑永远不会触发 - 未校验目标目录是否存在,若游戏目录下没有
locale文件夹时会直接报错
修正后完整代码
import shutil import os from tkinter import filedialog from tkinter import messagebox # 选择要移动的文件,返回路径元组 files = filedialog.askopenfilenames(initialdir="/", title="Select file") # 校验是否选中文件 if not files: messagebox.showwarning("Warning", "Add the file.") exit() # 未选中文件直接退出后续逻辑 destination = r'C:\Program Files (x86)\Steam\steamapps\common\I Wanna Maker\locale' # 校验目标目录是否存在,不存在则创建 if not os.path.exists(destination): os.makedirs(destination) # 遍历所有选中文件执行移动 for file_path in files: try: shutil.move(file_path, destination) except PermissionError: messagebox.showerror("错误", "无目标目录写入权限,请以管理员身份运行程序") exit() except Exception as e: messagebox.showerror("错误", f"移动文件失败:{str(e)}") exit() messagebox.showinfo("成功", "所有翻译文件已移动到游戏目录")
额外注意事项
- 涉及C盘Program Files目录的写入操作需要系统管理员权限,运行脚本时右键选择「以管理员身份运行」即可避免权限报错
- 若需要覆盖目标目录下的同名文件,可以在移动逻辑前新增代码:
os.remove(os.path.join(destination, os.path.basename(file_path))),先删除原有文件再执行移动即可
内容的提问来源于stack exchange,提问作者DMDiamond
相关产品推荐
相关产品推荐

