2013-03-27 4 views
-2

나는 리눅스에서 파이썬 프로그램을 작성 중이다.파이썬 프로그램 내에서 linux 명령 실행

내 파이썬 프로그램에서 파이썬 프로그램 내부에서 다른 작업 디렉토리에서 linux 명령을 실행해야합니다.

예 : 내 프로그램 test.py는 dir1/dir2 디렉토리에 있습니다.

./wlst.sh는 dir1/dir2/dir3/dir4의 프로그램입니다.

그래서 dir2에있는 python 프로그램의 dir4에서 .wlst.sh를 실행해야합니다.

어떻게이 작업을 수행 할 수 있습니까?

+0

을 사용할 수 있습니다 http://docs.python.org/2/library/subprocess.html # 모듈 - 하위 프로세스) 모듈. 어떤 문제가 있습니까? –

답변

0
import subprocess 
subprocess.call(['./wlst.sh'], cwd='dir1/dir2/dir3/dir4') 
+0

'chdir'을 사용하면 부작용이 분명합니다. 'call()'에 선택적 매개 변수'cwd ='를 사용하십시오. – Alfe

3
import subprocess 
try: 
    output = subprocess.check_output(
    [ './wlst.sh' ], 
    cwd='dir1/dir2/dir3/dir4', 
    stderr=subprocess.STDOUT) 
except subprocess.CalledProcessError as problem: 
    print "Error", problem.returncode 
    print " while calling subprocess, output was:", problem.output 
else: 
    print "No error while calling subprocess, output was:", output 

나는이 서브 프로세스의 모든 출력을 캡처하는 언급, 그래서이 하위 프로세스를 많이하고 많이 않는 경우 (그리고 어쩌면 종료하지 않습니다),이 당신의 RAM을 채울 것입니다. 이 경우 check_output() 대신 check_call()을 사용하고 출력을 /dev/null으로 리디렉션하는 것이 좋습니다.

-2
import os ,subprocess 
    os.chdir("dir3/dir4") 
    os.system("./wlst.sh") 

또는 다른 u는 내가 (당신이 봤했다고 가정하고 [`subprocess`] 발견 서브 프로세스

os.chdir("dir3/dir4") 
    subprocess.call("./wlst.sh") 
+0

'chdir'을 사용하면 부작용이 분명합니다. – Alfe

관련 문제