'在/ usr / local / bin中/波'只接受文件名作为输入,所以我需要调用该过程,然后"发送"命令,并等待输出文件被写入。然后我的进程可以继续读取输出文件。这是我的代码,不写入输出文件:
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 :(得分: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")
我需要设置“stdout”以避免PV-Wave的额外输出。 我需要使用“沟通”来等待流程完成。