Skip to main content
 首页 » 编程设计

Python:更改与 py2app 捆绑在一起的脚本的 CWD

2025年05月04日22thcjp

我的脚本在使用 python 运行时运行良好,但在我使用 py2app 构建它之后,文件和文件夹在 .app/Contents/Resources< 中创建。我使用 os.getcwd() 找出脚本所在的位置。

我该如何解决这个问题并确保我的文件是在包含应用程序的目录中创建的?

黑客修复

这是一个有效的技巧:

if re.search('([^/]+$)', cwd).group(0) == "Resources": 
    mkFldr(cwd[0:-27] + fldr)         #this is a try except function 
    sanExt(extPath, str(cwd[0:-27] + fldr + "/" + extName + "_san.csv")) 
else: 
    mkfldr(fldr) 
    sanExt(extPath, str(cwd + "/" + fldr + "/" + extName + "_san.csv")) 

请您参考如下方法:

如果我正确理解您的问题,我会使用类似于以下内容的方法来处理此问题。 “卡住”部分会根据您运行的是脚本还是 py2exe/py2app 可执行文件来更改行为。

import sys 
import os.path 
 
frozen = getattr(sys, 'frozen', '') 
 
if frozen: 
    MyFolder = os.path.dirname(sys.executable) 
else: 
    Myfolder = os.getcwd()