2

これについては、スタック オーバーフローに関するいくつかのトピックがあることを知っています。しかし、これらのどれも私には意味がありません。私はpythonとperlの両方に不慣れで、理解するために最善を尽くしています. Python コードから perl スクリプトを実行したいと考えています。

コマンド プロンプトで perl スクリプトを実行すると、次のようになります。

perl perlscript.pl input.bopt7 output.xml

このコマンドを Python コードから実行したいと思います。私は次のことを試しました:

pipe = subprocess.Popen(["perlscript.pl" , "input.bopt7" , "output.xml"], stdout=subprocess.PIPE)

しかし、これは機能しません。有効な win32 ではないというエラーが表示されます ...

このスクリプトからの入力も出力も必要ありません。一度実行するだけです。

4

3 に答える 3

2

perlperl スクリプトを実行するときは、コマンド自体を含める必要があります。

pipe = subprocess.Popen(["perl", "perlscript.pl" , "input.bopt7" , "output.xml"], stdout=subprocess.PIPE)

コマンド ライン プロンプトで同じことを行いました。Popenクラスは、このスクリプトを Perl で実行するファイルから推測できませんperlscript.pl。:-)

于 2012-09-12T09:29:15.417 に答える
1

Perl を Popen 引数に追加しようとしましたか (コマンド ラインで行うのと同じように)?

pipe = subprocess.Popen(["perl", "perlscript.pl" , "input.bopt7" , "output.xml"], stdout=subprocess.PIPE)

あなたの例では、Windows は "perlscript.pl" を Win32 実行可能ファイルとして実行しようとします。これは指定した最初のパラメーターであり、適切なバイナリ ヘッダーが含まれていないため失敗します (テキスト ファイルであるため)。

于 2012-09-12T09:30:20.587 に答える
0

perl.exeがあなたの中にある場合、最初の引数は である必要がperl.exeありますPATH。または実行可能ファイルへのフルパス。残りはすべて への引数perl.exeです。

perlscript.plまた、とのフル パスを必ず入力してくださいinput.bopt7

于 2012-09-12T09:29:11.537 に答える