3

私はPython3で(ある程度)モジュラーアプリケーションを作成していて、そこから任意のプログラムを実行したいと思っています。このプログラムは実行時に指定され、必ずしもPythonスクリプトではありません。

だから私は例えば、

subprocess.call([spam, "-i", eggs, "-o", ham])

spamがPythonスクリプトであり、シバンpython3と実行可能権限がある場合、次のようになります。

OSError: [Errno 8] Exec format error

もし私が

subprocess.call(["python3", spam, "-i", eggs, "-o", ham])

それはうまくいきます。

なぜなのかご存知ですか?spam指定せずに実行するにはどうすればよいpython3ですか?

4

2 に答える 2

8

を使用する必要がshell=Trueあり、次のように配列をコマンド文字列に変換する必要があります。

subprocess.call(' '.join([spam, "-i", eggs, "-o", ham]), shell=True)

これにより、直接コマンドではなくシェルが呼び出され、シェルはシバンを処理できるはずです。

于 2011-06-22T14:29:19.277 に答える
-2

試す

subprocess.call(['spam.py', "-i", eggs, "-o", ham])
于 2011-06-22T14:26:09.250 に答える