是否可以从Python executalbe访问启动快捷方式目录?

时间:2018-02-26 23:01:13

标签: python windows windows-installer cx-freeze

我目前有一个Python脚本,它运行当前目录中的所有Excel文件并生成PDF报告。

它现在工作正常,但我不希望用户接近冻结的Python脚本。我用cxFreeze创建了一个MSI,它将EXE和脚本放在 Program Files 目录中。

我希望能够创建此可执行文件的快捷方式,并将运行快捷方式的目录传递给Python程序,以便可以将其设置为工作目录。这将允许用户将快捷方式移动到Excel文件的任何文件夹并在那里生成报告。

Windows是否将已打开的快捷方式的位置发送到可执行文件,是否有办法从Python访问它?

2 个答案:

答案 0 :(得分:0)

修改脚本是否存在将目录作为命令行参数处理的问题?

然后,您可以配置不同的快捷方式以传入相应的目录。

答案 1 :(得分:0)

在批处理文件中键入以下内容(即 script.bat):

python \absolute\path\to\your\script.py %~dp0
pause

然后将这些导入添加到您的 python 文件 script.py 的顶部(如果尚未包含):

import os
import sys

并将其添加到 python 文件的底部(或将其与类似的语句组合):

if __name__ == "__main__":
    # set current working directory:
    if len(sys.argv) > 1:
        os.chdir(sys.argv[1])

    main()

main() 替换为您要调用的任何函数或要运行的代码。


以下是我的答案:

我尝试使用 kindall's answer 并遇到以下问题:

  • 将脚本存储在 PYTHONPATH 某处的第一个建议无法应用于我的情况,因为我的脚本将在服务器上使用并且需要独立于客户端计算机的 python 环境(除了具有所需的 pip 安装)。

  • 我尝试从可以移动到不同位置的 Windows 批处理文件调用我的 python 脚本。它不是用作当前工作目录的批处理文件的位置,而是 C:\Windows

  • 我尝试将 %cd% 作为参数传递给我的 python 脚本,然后将其设置为我的 CWD。这仍然导致 C:\Windows 的 CWD。

查看评论后,我尝试使用 Eryk Sun's suggestion 代替将 %~dp0 作为参数传递给 python 脚本。这导致 CWD 被正确设置为批处理文件的位置。

我希望这能帮助其他面临类似困难的人。