Mac アプリケーションを使用して開くように要求されているファイルを取得するにはどうすればよいですか?

Mac アプリケーションを使用して開くように要求されているファイルを取得するにはどうすればよいですか?

ファイル拡張子を開くことができる Mac アプリケーションを作成しました。

しかし、テストしたところ、アプリケーションを使用して開くように要求されたファイルのパスが取得されず、代わりに「psn_0_151589」が取得されました。

iTunes、TextEdit、Xcode、その他のアプリケーションで確認しました。

以下は、開いたファイルのパスを処理するPythonアプリのサンプルメインコードです。

import sys
import os.path
print("File opened with this app :: ",sys.argv[1])
if(os.path.exists(sys.argv[1]):
  print("valid file :: { do something...}\n")
else:
  print("Invalid file path received :: { do nothing }\n") 

出力:

File opened with this app :: psn_0_151589
Invalid file path received :: { do nothing }

任意のアプリケーションを使用して開かれたファイルパスを取得する方法を誰かが知っていることを願っています。

ご協力いただければ幸いです。

答え1

Mac OS X アプリケーション バンドルは、開くファイルをコマンド ライン引数として受け取りません。通常、すべてのアプリケーションにはインスタンスが 1 つしかないため、これ以上のファイルを開くことが制限されます。代わりに、アプリケーションがすでに実行されているときに送信されるメッセージです。受け取る引数は、プロセスのシリアル番号です。詳細はこちら


あるいは、PythonスクリプトをAutomatorアプリケーションのシェルスクリプトを実行するアクション(#!/usr/bin/python「シェル」)を選択します。入力を渡すように選択すると引数として、これらは で利用可能になりますargv。サンプル コードを参照してください。

スクリーンショット

関連情報