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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:45:35