2015-01-08 3 views
1

파이썬을 사용하여 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);

사람이 여기에 갈 수 있는지 알고 있나요

? 나는 분명히 파이썬 놈이다. 그래서 이것은 어리석은 질문 일 수있다.

+0

아마도 [pygmsh] (HTTPS :

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

당신이 shell=True를 사용하려는 경우, 문자열 목록의 캐릭터 isntead을 통과 : 당신은 패턴과 일치하는 파일 목록을 얻으려면 glob.glob을 사용할 수 있습니다 : //github.com/nschloe/pygmsh)도 여기에서 사용할 수 있습니다. –

답변

2

globing은 쉘에 의해 수행됩니다. 파이썬에서는 직접해야합니다.

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

그게 작동합니다. 정말 고마워! 파이썬으로 프로그래밍 한 첫날 ... 배워야 할 것이 많습니다. – user3335011

+0

@ user3335011, 스택 오버플로에 오신 것을 환영합니다! 이것이 도움이된다면, [답변 수락] (http://meta.stackoverflow.com/a/5235)을 통해 커뮤니티에 알릴 수 있습니다. – falsetru

관련 문제