2016-09-07 34 views
0

我最近制作了一个python脚本,它可以通过放置在任何目录中的文件,并根据特定条件重命名它们。该脚本完美工作,我使用py2app将脚本编译成OS X .app。这工作得很好。但是现在,当我运行脚本时,它将搜索“.app/contents/macOS”文件夹(脚本所在的位置)中的文件,而不是“.app”实际位于的文件。如何找到python脚本运行的.app目录

这是因为它在开始这段代码:

src = os.path.dirname(os.path.abspath(__file__)) 

其中的“py”为文件的位置分配给一个变量,然后整个脚本中广泛使用。有什么办法可以添加一段代码,告诉python“.py”文件执行的“.app”的路径位置吗?

如果不是,也许有一种方法可以打开文件资源管理器窗口,从这里用户可以选择一个文件夹,然后将其分配给“src”变量。我对python很陌生,所以这肯定是一个挑战。

回答

0

尝试使用:

import os 
print(os.getcwd()) 

从文档:

GETCWD()

返回代表当前工作目录unicode字符串。

+0

@感谢回复,非常感谢,不幸的是,这不起作用,并出现同样的问题,我想我将不得不使用tkinter来提示用户选择一个目录。当我完成 – Ruthus99

+0

@ Ruthus99时,会添加代码。 – turkus

0

要找到打包应用程序的.app目录的位置,最直接的方法是修改您使用当前代码查找的路径。计算src像你一样后,只需修剪像这样和使用app的路径:

import re 
... 
app, rest = re.split(r"/[^/]*\.app/", src, 1) 

这会停在在.app结束第一路径组件。如果您愿意,您可以硬编码您的应用程序名称,例如/myprogram.app/

PS。我对你为什么将你的应用程序复制到你想修改的文件夹感到困惑。文件选择对话框(或拖放)是告诉程序要处理的更常见(也是更容易)的方式。 OS X应用程序与py2app支持拖放创建:您的程序可以获取路径滴下的目录是这样的:

import sys 
folders = sys.argv[1:] # Handles multiple arguments 
for folder in folders: 
    do_something_in(folder) 

然后只需将要处理的目录或目录拖放到应用程序图标,这您可以只保留在桌面,Finder的侧边栏或最喜欢的目录中 - 每次使用时都不需要复制它,也不需要知道它的来源。

相关问题