簡體   English   中英

如何找到運行python腳本的.app目錄

[英]How to find the directory of the .app that a python script is running from

我最近制作了一個python腳本,該腳本可以遍歷文件所在目錄中的文件,並根據某些條件對其進行重命名。 該腳本運行完美,我使用py2app將腳本編譯為OS X .app。 這也很好。 但是,現在運行腳本時,它會搜索“ .app / contents / macOS”文件夾(腳本所在的位置)中的文件,而不是“ .app”的實際位置。

這是因為它的開頭有以下代碼:

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

它將“ .py”文件的位置分配給一個變量,該變量隨后在整個腳本中得到廣泛使用。 有什么方法可以代替我添加一段代碼,告訴python執行“ .py”文件的“ .app”的路徑位置嗎?

如果沒有,也許有一種方法可以打開文件瀏覽器窗口,用戶可以從中選擇一個文件夾,然后將該文件夾的路徑分配給“ src”變量。 我對python非常陌生,因此這無疑是一個挑戰。

嘗試使用:

import os
print(os.getcwd())

從文檔:

getcwd()

返回表示當前工作目錄的unicode字符串。

若要查找包裝應用程序的.app目錄的位置,最直接的方法是用當前代碼修改找到的路徑。 在像您一樣計算src之后,只需像這樣修剪它並使用app作為路徑:

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

這在以.app結尾的第一個路徑組件處停止。 如果願意,可以對應用程序名稱進行硬編碼,例如/myprogram.app/

PS。 為什么將您的應用程序復制到要修改的文件夾,我感到困惑。 文件選擇對話框(或拖放)是告訴程序要執行的操作的更常見(更簡單)的方法。 使用py2app創建的OS X應用程序支持拖放操作:您的程序可以獲取到放置目錄的路徑,如下所示:

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

然后只需將要處理的一個或多個目錄拖放到應用程序圖標上即可,您可以將其保留在桌面,Finder的側邊欄或收藏夾目錄中-每次使用時都無需復制它,並且無需需要它知道其來源在哪里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM