命令行错误存储在文件中

时间:2018-07-27 10:44:53

标签: python subprocess particles

我正在使用Dual SPH可执行文件触发SPH模拟。它具有四个连续的子流程命令,这些命令将逐步生成模拟的vtk文件。问题在于,假设SPH中的粒子距离非常敏感,并且没有正确的计算方法。如果粒子距离太高,则它将无法运行第一个命令,并且会产生错误。我想编写一个可以读取第一个子过程给出的错误的代码,以便我可以优化整个粒子距离。有什么方法可以读取第一个子进程给出的错误?

Gen = subprocess.Popen(args = sph_location+"\\"+"GenCase4_win64"+" "+def_out+" "+out+"\\"+r"z -save:all", shell='TRUE')
Gen.communicate()
Dual = subprocess.Popen(args= sph_location+"\\"+"DualSPHysics4.2_win64"+" "+out+"\\"+r"z -svres -cpu", shell='TRUE')
Dual.communicate()
Vtk = subrocess.Popen(args= sphlocation+"\\"+"PartVTK4_win64"+" -savevtk "+out+"\\"+r"zPartFluid -onlytype:-all,+fluid -vars:+vol", shell='TRUE')
Surface = subprocess.Popen(args= sph_location+"\\"+"IsoSurface4_win64"+" "+r"-onlytype:+fluid -vars:+vol -saveiso surface" ,shell='TRUE') 
Surface.communicate()

1 个答案:

答案 0 :(得分:0)

Gen = subprocess.Popen(args = sph_location+"\\"+"GenCase4_win64"+" "+def_out+" "+out+"\\"+r"z -save:all", shell='TRUE', stderr=subprocess.PIPE)    
output,error = Gen.communicate()
print(error)

这将等待命令完成,并根据命令的状态为您提供输出或错误。