PySimpleGUI传递文件路径打开YAML文件报错求助
解决PySimpleGUI中获取文件路径并打开YAML文件的问题
你的核心问题是错误地将字符串"-FILE_PATH-"直接传入open()函数,而没有从PySimpleGUI的values字典中读取用户实际选择的文件路径。values字典会自动存储所有带key属性的组件的输入值,你需要通过values["-FILE_PATH-"]来获取真实的文件路径。
另外你修改后的代码里,values["-FILE_PATH-"]这行代码只是读取了值但没有保存或使用,对解决问题没有帮助。
修正后的完整代码
import PySimpleGUI as sg import yaml from yaml.loader import SafeLoader import os working_directory = os.getcwd() layout = [ [sg.Text("选择YAML文件:")], [sg.InputText(key="-FILE_PATH-"), sg.FileBrowse(initial_folder=working_directory, file_types=[("YAML Files","*.yaml")])], [sg.Button("提交"), sg.Exit()] ] window = sg.Window("文件加载器", layout) while True: event, values = window.read() if event in (sg.WIN_CLOSED, 'Exit'): break elif event == "提交": # 从values字典中获取实际的文件路径 file_path = values["-FILE_PATH-"] # 增加判断,防止用户未选择文件就点击提交 if not file_path: sg.popup("请先选择一个YAML文件!") continue # 使用获取到的路径打开文件 with open(file_path, 'r', encoding='utf-8') as f: data = yaml.load(f, Loader=SafeLoader) print(data) window.close()
关键修改点说明
- 替换
open("-FILE_PATH-")为open(file_path),其中file_path来自values["-FILE_PATH-"],这才是用户选择的真实文件路径 - 增加了空路径判断,避免用户未选文件时触发错误
- 给
open()函数加上了编码参数encoding='utf-8',防止读取含中文的YAML文件时出现编码问题
内容的提问来源于stack exchange,提问作者FlightJ23
相关产品推荐
相关产品推荐

