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

Command Line error stored in a file

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

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