使用Python Tkinter filedialog选择Steam快捷方式返回错误
解决Steam快捷方式选择报错及读取问题
1. 修正文件选择器的类型过滤
当前代码的filetypes虽包含*.*,但显式添加.url类型能让选择器更精准识别这类文件,规避系统层面的识别异常:
filename_path = filedialog.askopenfilename( initialdir="/", title="Select File", filetypes=( (".exe files", "*.exe"), (".url shortcuts", "*.url"), ("all files", "*.*") ) )
2. 处理Steam .url文件的读取逻辑
Steam生成的.url本质是文本文件,你需要读取其内容获取游戏启动链接,不能直接使用文件路径:
import os if filename_path.endswith(".url"): with open(filename_path, 'r', encoding='utf-8') as f: for line in f: if line.startswith("URL="): steam_link = line.strip().split("=", 1)[1] # 后续用这个steam_link创建指向Steam游戏的快捷方式 print(f"Steam游戏启动链接: {steam_link}") break
3. 解决权限类报错
若仍出现报错,大概率是文件权限问题:
- 右键以管理员身份运行你的Python脚本
- 确保Steam安装目录和快捷方式所在文件夹有可读权限
- 可先把Steam快捷方式复制到桌面再进行测试,避免访问
Program Files这类受保护目录下的文件
4. 区分Steam的.lnk与.url快捷方式
Steam游戏快捷方式通常是.lnk格式(而非.url),若选择的是.lnk文件,需用pywin32库读取其目标路径:
import win32com.client shell = win32com.client.Dispatch("WScript.Shell") shortcut = shell.CreateShortCut(filename_path) print(f"快捷方式目标路径: {shortcut.Targetpath}") print(f"快捷方式启动参数: {shortcut.Arguments}")
(需先安装pywin32:pip install pywin32)
内容的提问来源于stack exchange,提问作者coob
相关产品推荐
相关产品推荐

