我最近创建了一个python脚本,该脚本遍历放置在其中的任何目录中的文件,并根据特定条件重命名它们。该脚本运行完美,我使用py2app将脚本编译成OS X .app。这也很好。但是现在当我运行脚本时,它会搜索" .app / contents / macOS"中的文件。文件夹(脚本所在的位置)而不是" .app"实际上是位于。
这是因为它在开始时有这个代码:
src = os.path.dirname(os.path.abspath(__file__))
指定" .py"的位置。将文件传递给变量,然后在整个脚本中广泛使用该变量。有没有办法我可以添加一段代码,告诉python" .app"的路径位置。那个" .py"文件正在执行?
如果没有,也许有一种方法可以打开文件浏览器窗口,从那里用户可以选择一个文件夹然后将路径分配给" src&# 34;变量。我对python很新,但这肯定是一个挑战。
答案 0 :(得分:0)
尝试使用:
import os
print(os.getcwd())
来自docs:
<强> GETCWD()强>
返回表示当前工作目录的unicode字符串。
答案 1 :(得分:0)
要查找包装应用程序的@PostConstruct
public void initAfterStartup() {
...
}
@PreDestroy
public void cleanupBeforeExit() {
...
}
目录的位置,最直接的方法是修改使用当前代码找到的路径。像你一样计算.app
之后,只需像这样修剪它并使用src
作为路径:
app
这在以import re
...
app, rest = re.split(r"/[^/]*\.app/", src, 1)
结尾的第一个路径组件处停止。如果您愿意,可以对应用程序名称进行硬编码,例如: .app
。
PS。我很困惑你为什么要将你的应用程序复制到你想要修改的文件夹。文件选择对话框或拖放操作是告诉程序要处理什么的更常见(也更简单)的方法。使用/myprogram.app/
创建的OS X应用程序支持拖放:您的程序可以像这样获取已删除目录的路径:
py2app
然后只需将要处理的目录拖放到应用程序图标上,您可以将其保存在桌面,Finder的侧边栏或收藏目录中 - 每次使用时都无需复制它,并且不需要知道它的来源。