2015-01-08 38 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

相關問題