PySimpleGUI文件夹浏览后文件路径出现双斜杠问题求助
解决PySimpleGUI程序中STP文件路径双斜杠问题
问题原因
路径出现双斜杠(或分隔符错误)的核心是手动拼接路径时未适配系统路径分隔符规则:如果从PySimpleGUI的FolderBrowse获取的文件夹路径末尾已带反斜杠,再手动追加\\或/就会导致重复分隔符;另外直接字符串拼接还可能因系统差异(Windows用反斜杠,类Unix用正斜杠)引发路径无效。
解决方案
放弃手动拼接路径,改用Python标准库提供的路径处理工具,它们会自动适配不同系统的分隔符规则,彻底避免分隔符错误。
方法1:用os.path.join()拼接路径
修改stpFinder函数,用os.path.join()自动组合路径:
import os import PySimpleGUI as sg def stpFinder(target_folder): stp_files = [] # 递归遍历文件夹下所有文件 for root, _, files in os.walk(target_folder): for file in files: # 匹配.stp/.step格式(兼容大小写) if file.lower().endswith(('.stp', '.step')): # 自动生成合法路径 full_path = os.path.join(root, file) stp_files.append(full_path) return stp_files # PySimpleGUI交互逻辑 layout = [ [sg.Text("选择目标文件夹"), sg.FolderBrowse(key="-FOLDER-")], [sg.Button("查找STP文件"), sg.Button("退出")], [sg.Output(size=(80, 20))] ] window = sg.Window("STP文件查找工具", layout) while True: event, values = window.read() if event == sg.WIN_CLOSED or event == "退出": break if event == "查找STP文件": folder = values["-FOLDER-"] if not folder: print("请先选择文件夹") continue stp_list = stpFinder(folder) print(f"找到{len(stp_list)}个STP文件:") for path in stp_list: print(path) window.close()
方法2:用pathlib(更简洁的面向对象方式)
Python3.4+推荐的路径处理模块,代码更直观:
from pathlib import Path import PySimpleGUI as sg def stpFinder(target_folder): folder = Path(target_folder) # 递归查找所有.stp/.step文件(兼容大小写) stp_files = list(folder.rglob("*.stp")) + list(folder.rglob("*.step")) # 转换为字符串路径(也可直接保留Path对象用于后续操作) return [str(path) for path in stp_files] # PySimpleGUI交互逻辑同方法1
关键说明
- PySimpleGUI的
FolderBrowse返回的路径在Windows下可能带末尾反斜杠,os.path.join()和pathlib都会自动处理这种情况,不会产生重复分隔符。 - 用
lower()匹配后缀是为了兼容.STP/.STEP这类大写格式的文件。
内容的提问来源于stack exchange,提问作者Dominick Cole
相关产品推荐
相关产品推荐

