我目前有一个Python脚本,它运行当前目录中的所有Excel文件并生成PDF报告。
它现在工作正常,但我不希望用户接近冻结的Python脚本。我用cxFreeze创建了一个MSI,它将EXE和脚本放在 Program Files 目录中。
我希望能够创建此可执行文件的快捷方式,并将运行快捷方式的目录传递给Python程序,以便可以将其设置为工作目录。这将允许用户将快捷方式移动到Excel文件的任何文件夹并在那里生成报告。
Windows是否将已打开的快捷方式的位置发送到可执行文件,是否有办法从Python访问它?
答案 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。p>
查看评论后,我尝试使用 Eryk Sun's suggestion 代替将 %~dp0
作为参数传递给 python 脚本。这导致 CWD 被正确设置为批处理文件的位置。
我希望这能帮助其他面临类似困难的人。