2017-09-04 3 views
0

현재 작업중인 스크립트에서 데이터를 생성하는 다른 파이썬 스크립트를 실행해야합니다. 나는 을 사용하여 실행합니다 :다른 전달에서 서브 프로세스를 사용하여 파이썬 스크립트를 실행하는 방법

cmd = 'python /home/usr/script.py arg1 arg2 arg3' 
subprocess.Popen(cmd, shell=True) 

그러나 문제가 있습니다. 이전 스크립트는 '현재 디렉토리'에 몇 개의 디렉토리를 생성합니다.이 디렉토리는 실행 된 디렉토리를 의미합니다. 이전 스크립트를 수정할 수 없으므로 광산이 아닙니다. 데이터를 가져 오려는 dir에 현재 디렉토리를 설정하는 방법은 무엇입니까? \n
또 다른 작은 문제는 내가 실행할 때 subprocess.Popen() 내 스크립트가 끝나지 않는다는 것입니다. 다른 방식으로 실행해야합니까?

답변

1

최선의 방법 subprocess.call를 사용하는 대신에 상기 서브 프로세스의 현재 디렉토리를 지정 cwd= 매개 변수를 사용하여 (& 종료 좀비 프로세스를 생성 할 수있다 관련 wait()없이 Popen 대기)도 (

cmd = ['python','/home/usr/script.py','arg1','arg2','arg3'] 
return_code = subprocess.call(cmd, cwd="/some/dir") 

을 명령을리스트로 전달하고 shell=True을 버리면 여기 필요하지 않습니다.)

+0

'os.chdir()'메소드를 해결책으로 찾았지만 메소드 인수로 사용하는 것이 더 낫습니다. 도움을 청하기. –

+1

예,'os.chdir()'은 현재 프로세스의 현재 디렉토리를 변경하기 때문에 피해야합니다. –