2016-09-07 9 views
0

最近、私は最近、pythonスクリプトを作成して、それが置かれているディレクトリにファイルを移動し、特定の基準に基づいて名前を変更します。スクリプトは完璧に動作し、py2appを使ってOS Xの.appにスクリプトをコンパイルしました。これもうまくいきました。しかし、今はスクリプトを実行すると、 ".app"が実際に配置されている場所ではなく、 "。app/contents/macOS"フォルダ(スクリプトがある場所)のファイルを検索します。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

@thanksは非常に感謝しています。残念ながらそれはうまくいかず、同じ問題が発生します。ユーザーにディレクトリを選択させるためにtkinterを使用する必要があります。私が完了したらコードを追加します – Ruthus99

+0

@ Ruthus99確かに。 – turkus

0

アプリケーションをラップする.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のサイドバー、またはお気に入りのディレクトリを利用するだけで済みます。使用するたびにコピーする必要はなく、ソースの場所を知る必要はありません。

関連する問題