2015-02-01 8 views
1

내가 터미널에 쓸 때 :

./sherlock *.txt 

작동하지만 나는

import subprocess 
subprocess.call(['./sherlock','*.txt']) 


import subprocess 
subprocess.call('./sherlock','*.txt',shell=True) 

import subprocess 
subprocess.call('./sherlock','*.txt',shell=False) 
같은 동일한 사용하여 파이썬 서브 프로세스를 수행 할 때

어느 쪽도 도움이되지 않습니다.

답변

6

쉘 확장 *, subprocess.call 않습니다. glob.glob을 사용하여 직접 *을 확장하십시오.

그런 다음 발급 할 명령을 나타내는 인수는 목록 또는 문자열 개체 여야합니다 (다중 인수가 아님).

import glob 
import subprocess 
subprocess.call(['./sherlock'] + glob.glob('*.txt'), shell=False) 
+0

특히 쉘이 와일드 카드를 확장하지 않기 때문에 'shell = True'를 사용하면 거기에서도 도움이되지 않습니다. – kindall

+0

당신은'shell = False'를 생략 할 수 있습니다; 기본값입니다. – jfs