1

Python を使用して特定のアプリケーションでファイルを開く必要があります。デフォルトのアプリの場所/ファイル名を使用してファイルを開くようにデフォルトに設定します。ただし、アプリを開くことができない場合は、そのエラーを処理し、ユーザーに他のオプションを提供したいと思います。

これまでのところ、system.os とは対照的に、subprocess.call がこれを行うための最良の方法であることを理解しています。

アプリケーション: /Applications/GreatApp.app

これはうまくいきます

subprocess.call(['open','/Applications/GreatApp.app','placeholder.gap'])

ただし、try / except ループの追加を開始すると、何もしないように見えます。(アプリケーション名のスペースに注意してください - 例外を強制するために間違った名前を使用しています)

try:
    subprocess.call(['open','/Applications/Great App.app','placeholder.gap'])
except: 
    print 'this is an error placeholder'

Python で次のエラーが表示されます。

The file /Applications/Great App.app does not exist.

エラー処理のいくつかの形式に私が見つけた最も近いものは次のとおりです。retcode の値を見るのは正しい方法ですか?

try:
    retcode = subprocess.call("open " + filename, shell=True)
    if retcode < 0:
        print >>sys.stderr, "Child was terminated by signal", -retcode
    else:
        print >>sys.stderr, "Child returned", retcode
except OSError, e:
    print >>sys.stderr, "Execution failed:", e

正しい名前と間違った名前の両方が 0 より大きい値を与えるため、retcode は方法ではないことが判明しました。

4

3 に答える 3

0

これは何を示していますか?

subprocess.call (['ls', '-l', '/Applications'])

表示されたエラー メッセージは、開こうとしているアプリケーションが存在しないことを示しています。

そして、あなたが見つけた通りではない場合、例外は発生しません。

于 2013-10-24T04:21:30.373 に答える
0

これで試してみてください。インストールされている場合、デフォルトのエディターでファイルを開きます。

ss=subprocess.Popen(FileName,shell=True)
ss.communicate()
于 2013-10-24T06:43:15.800 に答える