存储在文件中的命令行错误



我正在使用双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()
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)

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

最新更新