2016-08-31 4 views
0

'/ usr/local/bin/wave'は入力としてファイル名を受け入れるだけなので、プロセスを呼び出してからコマンドを「送信」し、出力ファイルが書き込まれるまで待つ必要があります。その後、私のプロセスは、出力ファイルを読むことに進むことができます。ここでは、出力ファイルに書き込めません。私のコードは次のとおりです。PV-Waveを呼び出すpython

hdfFile = "/archive/HDF/16023343.hdf" 
pngFile = "/xrfc_calib/xrfc.130.png" 
lpFile = os.environ['DOCUMENT_ROOT'] + pngFile 
waveCmd = "hdfview, '" + hdfFile + "', outfile='" + lpFile + "', web, view='RASTER', /neg" 
os.environ['WAVE_PATH'] = "/oudvmt/wave/pro:/dvmt/wave/pro" 
wfile = subprocess.Popen ('/usr/local/bin/wave >&2', shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE) 
wfile.stdin = "\@hdf_startup\n\@hdf_common\n" + waveCmd + "\nquit\n" 
+0

最後の2行は以下の通りです:wfile = subprocess.Popen( '/ usr/local/bin/wave>&2'、shell = True、stdin = subprocess.PIPE、stdout =サブプロセス.PIPE) wfile.stdin = "\ @hdf_startup \ n \ @ hdf_common \ n" + waveCmd + "\ nquit \ n" –

答えて

0

私が欠けていたものを見つけました。変更は最後の2行です。彼らは:

wfile = subprocess.Popen ('/usr/local/bin/wave', stdin=subprocess.PIPE, stdout=subprocess.PIPE) 
wfile.communicate("\@hdf_startup\n\@hdf_common\n" + waveCmd + "\nquit\n") 

私はPV-Waveから余分な出力を避けるために "stdout"を設定する必要がありました。 "通信"を使用してプロセスが完了するまで待つ必要がありました。

関連する問題