0

passthru()を使用して(サブプロセスとパイプを使用して)PythonスクリプトをPHPで呼び出すと、エラーが発生します。

エラーは次のとおりです。

トレースバック(最後の最後の呼び出し):ファイル"…/Desktop / h.py"、11行目、stdout = subprocess.PIPE)#変換コマンドを設定し、出力をパイプファイル "/ System / Library /Frameworksに転送します/Python.framework/Versions/2.5/lib/python2.5/subprocess.py "、593行目、init errread、errwrite)ファイル"/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2。 5 / subprocess.py "、行1079、_execute_childでchild_exceptionを発生させるOSError:[Errno2]そのようなファイルまたはディレクトリはありません

PHPパススルー:

<?php
passthru("/usr/bin/python2.5 /Users/Nagar/Desktop/h.py $argument1 $argument2 1 2>&1");
?>

エラーの原因となる私のPython行:

p1 = subprocess.Popen(['convert', fileIn, 'pnm:-'], stdout=subprocess.PIPE) #set up the convert command and direct the output to a pipe

サブプロセスでstdout=subprocess.PIPEを適切に使用するにはどうすればよいですか?

あなたの答えを楽しみにしています。

4

2 に答える 2

1

これは、シェルを介して実行する必要があるためです。したがって、シェル引数をTrueに設定する必要があります。

p1 = subprocess.Popen(['convert', fileIn, 'pnm:-'], stdout=subprocess.PIPE, shell=True)convert command and direct the output to a pipe
于 2012-06-20T08:38:31.680 に答える
0

PATHに「convert」コマンドを含むディレクトリがないようです。交換してみてください:

p1 = subprocess.Popen(['convert', fileIn, 'pnm:-'], stdout=subprocess.PIPE)

と:

p1 = subprocess.Popen(['/full/path/to/convert', fileIn, 'pnm:-'], stdout=subprocess.PIPE)

ここで、「/ full / path / to/convert」は「/usr/ bin/convert」のようになります。

于 2012-03-20T16:21:17.857 に答える