'/usr/local/bin/wave'只接受一个文件名作为输入,因此我需要调用进程,然后“发送”命令,并等待输出文件被写入。然后我的进程可以继续读取输出文件。以下是不写入输出文件的代码:

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"

最佳答案

我找到了我丢失的东西。更改为最后两行。他们是:

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波的额外输出。
我需要使用“通信”来等待进程完成。

关于python - python调用PV-Wave,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39251432/

10-13 06:44