2015-01-08 18 views
1

我想在UNIX上用python执行系统可执行文件。我用op.system()来做到这一点,但真的需要使用subprocess.call()来代替。我op.System通话低于:如何将文件列表传递到Python子进程

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 noob,所以这可能是一个愚蠢的问题。

+0

也许[pygmsh(HTTPS: //github.com/nschloe/pygmsh)也可以在这里使用。 –

回答

2

Globbing由壳为您完成。在Python中,你需要自己做。您可以使用glob.glob获得符合该模式的文件列表:

import glob 

call(["gmsh"] + glob.glob("default.msh_timestep%06d*" % (timestep,)) + 
    ["animation_options.geo"]) 

如果你想使用shell=True,通过字符串列表的字符串isntead:

call("gmsh default.msh_timestep%06d* animation_options.geo" % (timestep,), shell=True) 
+0

工作。非常感谢!我的第一天用Python编程...我有很多东西需要学习。 – user3335011

+0

@ user3335011,欢迎来到Stack Overflow!如果这对你有帮助,你可以通过[接受答案](http://meta.stackoverflow.com/a/5235)告诉社区。 – falsetru

相关问题