2016-09-07 134 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的側邊欄或最喜歡的目錄中 - 每次使用時都不需要複製它,也不需要知道它的來源。

相關問題