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

PyInstaller打包exe后如何指定CSV输出文件路径?

PyInstaller打包后指定CSV输出到dist目录的解决方案

问题原因

PyInstaller用-F参数打包成单文件后,程序运行时的当前工作目录不一定是exe所在的dist目录,直接用相对路径生成文件会导致文件出现在不确定位置(比如命令行启动目录、桌面),而非预期的dist目录。

解决步骤

1. 动态获取exe所在绝对路径

在代码中添加逻辑,自动识别当前运行环境(开发/打包后),获取exe文件所在目录的绝对路径,需要导入os和sys模块。

2. 修改CSV生成代码

将原有的相对文件名拼接成exe目录下的完整绝对路径。

修改后的代码如下:

import os
import sys
import datetime as dt

# ... 其他原有代码 ...

except KeyboardInterrupt:
    timer.cancel()
    endTime = str(dt.datetime.now().time())

    # 获取exe所在目录的绝对路径
    if getattr(sys, 'frozen', False):
        # 打包运行环境
        exe_dir = os.path.dirname(sys.executable)
    else:
        # 开发环境(保持原逻辑,输出到src目录)
        exe_dir = os.path.dirname(os.path.abspath(__file__))

    # 构建输出文件的完整路径
    op_file_name = f"{app.currdate}_{app.startTime[0:-7]}_{endTime[0:-7]}.csv".replace(":","-")
    op_file_path = os.path.join(exe_dir, op_file_name)

    app.getList().to_csv(op_file_path)
    print(f"O/P File generated at: {op_file_path}")

    sys.exit()

关键说明

  • getattr(sys, 'frozen', False):PyInstaller打包后会给sys添加frozen属性,用来区分开发/打包环境。
  • sys.executable:打包后指向exe文件路径,取其目录就是dist目录;开发环境下用os.path.abspath(__file__)获取当前脚本所在的src目录,保证开发时逻辑不变。
  • os.path.join():跨平台路径拼接,避免Windows下路径分隔符的兼容问题。

验证

重新执行你的PyInstaller命令打包后,将exe放在dist目录运行,CSV文件会直接生成在dist目录下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:27:42