2013-12-08 1 views
1

subprocess.call()을 사용하여 python3에서 명령 줄 프로그램을 실행하려고합니다. 나는 그것이 잘 작동하는 얻을 수있는, 다음의 예는 아무런 문제없이 실행 :Python3 서브 프로세스 모듈 : 빈 변수를 플래그로 전달할 수 있습니까?

subprocess.call(['add_phenotype.py', '-t', threads, '-s']) 

그러나, 나는 파일을 구문 분석하려면, 다음 내가 무엇을 발견, 다른 플래그로 명령을 실행 기반으로. 나는 이것을하는 방법을 이해할 수 없다. 예를 들어

: zeroed_out_file가 FALSE 인 경우

if zeroed_out_file: 
    args = '-z' 
else: 
    args = '' 

subprocess.call(['add_phenotype.py', '-t', threads, '-s', args]) 

실패. add_phenotype.py 스크립트는 인수를 인식하지 못한다고 즉시 종료합니다.

답변

4

첫 번째 인수는 목록을 취합니다. 단지 동적으로 목록을 작성 :

args = ['add_phenotype.py', '-t', threads, '-s'] 
if zeroed_out_file: 
    args.append('-z') 

subprocess.call(args) 

추가 명령 줄을 덧붙이하는 args에 더 많은 값을 추가 단지 문제이다 전환됩니다.

+0

간단하고 우아하면서도 그렇게 생각하지 못했습니다. 감사! –

관련 문제