Python のサブプロセスを介してコマンドを実行しようとしていますが、正しく実行されません。シェルに入力すると:
pack < packfile.dat
どこpack
に私のソフトウェアがありpackfile
、が入力ファイルである場合、ソフトウェアは正常に動作します。
Pythonでこれを試してみると:
import subprocess as sp
import shlex
cmd = 'pack < packfile.dat'.split()
p = sp.Popen(cmd)
ソフトウェアは不平を言います:
Pack must be run with: pack < inputfile.inp
Reading input file... (Control-C aborts)
そしてそれはそこにぶら下がっています。
この最後の部分は私のソフトウェアに固有のものですが、実際には、同じコマンドを実行する 2 つの方法では異なる結果が得られますが、そうであってはなりません。
誰が私が間違っているのか教えてもらえますか?
実際、私は最終的に次のことを行うつもりです。
p = sp.Popen(cmd,stdout=sp.PIPE,stderr=sp.PIPE)
stdout, stderr = p.communicate()
私はこれに少し慣れていないので、これがベストプラクティスでない場合はお知らせください。
前もって感謝します。