我正在尝试使用python在UNIX上执行系统可执行文件。我已经使用op.system()
来做到这一点,但确实需要使用subprocess.call()
来代替。我的op.System调用如下:os.system('gmsh default.msh_timestep%06d* animation_options.geo' %(timestep));
并且工作正常。它调用程序gmsh,并且gmsh读取default.msh_timestep%06d*
中指定的一系列文件。然后,我尝试对子进程执行相同的操作,但出现错误,提示文件不存在。以下是子流程调用:call(["gmsh", "default.msh_timestep%06d*" %(timestep), "animation_options.geo"],shell=True);
有人知道这里会发生什么吗?我承认我是Python新手,所以这可能是一个愚蠢的问题。
最佳答案
球形由外壳为您完成。在Python中,您需要自己做。您可以使用glob.glob
获取与模式匹配的文件列表:
import glob
call(["gmsh"] + glob.glob("default.msh_timestep%06d*" % (timestep,)) +
["animation_options.geo"])
如果要使用
shell=True
,请传递一个字符串列表中的一个字符串istead:call("gmsh default.msh_timestep%06d* animation_options.geo" % (timestep,), shell=True)