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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:15:03