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

如何在PySimpleGUI程序中自动将Path设为用户下载文件夹?

自动获取用户下载文件夹的最优方案

不用让用户选用户名,直接通过Python的系统API或第三方库就能跨平台自动获取当前用户的下载文件夹路径,下面是两种靠谱的实现方式:

方法一:标准库实现(无需额外依赖)

利用系统环境变量拼接路径,兼容Windows、macOS、Linux:

from pathlib import Path
import os

def get_downloads_folder():
    # Windows系统
    if os.name == 'nt':
        return Path(os.environ['USERPROFILE']) / 'Downloads'
    # macOS/Linux系统
    else:
        return Path(os.environ['HOME']) / 'Downloads'

# 生成最终保存路径
save_path = get_downloads_folder() / 'Finished_File.csv'

方法二:appdirs库实现(适配特殊系统场景)

appdirs会严格遵循各平台的标准目录规范,比如部分Linux发行版的下载路径差异也能自动适配:

  1. 先安装依赖:pip install appdirs
  2. 代码实现:
from pathlib import Path
import appdirs

def get_downloads_folder():
    return Path(appdirs.user_download_dir())

save_path = get_downloads_folder() / 'Finished_File.csv'

结合PySimpleGUI的完整示例

把路径获取逻辑融入CSV格式化流程,打包后也能自动适配当前用户:

import PySimpleGUI as sg
from pathlib import Path
import os
import csv

def get_downloads_folder():
    if os.name == 'nt':
        return Path(os.environ['USERPROFILE']) / 'Downloads'
    else:
        return Path(os.environ['HOME']) / 'Downloads'

# 示例CSV格式化逻辑
def format_csv(input_data):
    # 替换成你的实际格式化代码
    return [row for row in input_data]

# PySimpleGUI界面布局
layout = [
    [sg.Text('选择待格式化的CSV:'), sg.Input(key='-INPUT-'), sg.FileBrowse(file_types=(("CSV文件", "*.csv"),))],
    [sg.Button('开始格式化'), sg.Button('退出')],
    [sg.Text('保存路径:', key='-PATH-')]
]

window = sg.Window('CSV格式化工具', layout)

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == '退出':
        break
    if event == '开始格式化':
        input_path = values['-INPUT-']
        if not input_path:
            sg.popup('请先选择CSV文件!')
            continue
        # 读取原CSV
        with open(input_path, 'r', encoding='utf-8') as f:
            input_data = list(csv.reader(f))
        # 执行格式化
        formatted_data = format_csv(input_data)
        # 获取自动生成的保存路径
        save_path = get_downloads_folder() / 'Finished_File.csv'
        # 保存格式化后的文件
        with open(save_path, 'w', encoding='utf-8', newline='') as f:
            csv.writer(f).writerows(formatted_data)
        # 更新界面显示
        window['-PATH-'].update(f'保存路径:{save_path}')
        sg.popup('格式化完成!文件已保存到下载文件夹')

window.close()

这两种方案都能在打包后的程序中正常运行,完全不需要用户手动提供用户名信息,自动适配当前登录的系统用户。

内容的提问来源于stack exchange,提问作者Pongotan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:55:16