2013-01-18 5 views
0

가능한 중복 :
Calling an external command in Python파이썬 : 실행 외부 프로그램을 동적으로

내가 바이너리 프로그램처럼, 내 파이썬 스크립트에서 다양한 프로그램을 호출하기 좋아하지만 것 또한 다른 펄/파이썬/wget, sqlmap 및 사용자 정의 스크립트와 같은 루비 스크립트.

문제는 사용자가 기본 프로그램의 매개 변수를 변경할 수있게하려는 것입니다. 예를 들어 wget을 봅시다. 의 내가이 프로그램 (세 개의 매개 변수를 동적으로 명령에 입력되어 있습니다)를 호출하고있어 가정 해 봅시다 :

wget www.google.com --user=user --password=pass 

그러나 나는 또한 사용자처럼 wget과 명령에 사용자 정의 매개 변수를 추가하는 것입니다. 최선의 방법은 파일에서 직접 가져온 것 같지만, 이와 같은 것이 있으면 손으로 모든 것을 재 프로그램하지 않을지 궁금합니다. 이것은 단지 한 프로그램이 아니라고

또한 염두에 두어야하지만, 최대 100 개 프로그램, 어쩌면 수 있습니다. 사용자가 변경하기 위해서는 확장 가능하고 복잡하지 않아야합니다. 그냥이 매우주의 하시고 subprocess.check_output

program = 'wget' 
default_args = ['www.google.com'] 
user_args = [] 
subprocess.check_output(program + default_args + user_args) 

를 사용

감사

+3

['subprocess'] (http://docs.python.org/2/library/subprocess.html) 모듈을 살펴보십시오. –

답변

0

한 빠른 예는 모든 사용자가 명령에 매개 변수를 추가 할 수 있도록하기 전에 모든 보안 검사를 수행합니다.

당신은 또한 당신이 이런 식으로 뭔가를 할 수있는 외부 파일에서 기본값을 갖고 싶어

를 호출 서브 프로세스에 추가하기 전에 사용자 지정된 인수를 분할 shlex.split을해야 할 수도 있습니다

:

with open('wget_defaults.txt') as i: 
    default_args = i.read().split(',') 

희망을 도움이

+0

안녕하세요, 어떻게해야하는지 묻지 않으려 고합니다. 분명히 할 수있는 방법을 알고 있습니다. 매우 간단합니다. 나는 그것을 쉽게 확장 할 수있는 방법을 묻는다. 나는 다양한 프로그램을 위해 .txt로 매개 변수를 갖고 싶다 : 이것을하기 매우 어렵지 않다. 그게 뭔가 존재하는지 묻는 것 뿐이니까요. 그래서 사용할 수 있어요. 답을 수정하십시오. – eleanor

관련 문제