2017-10-23 1 views
0

필자는 파이썬 스크립트를 사용하여 필요한 모든 인수의 이름을 지정해야합니다 (비위 위치).argparse에서 인수를 요구하고 그것을 비 위치 화하는 방법?

python myscript --arg1 arg1 --arg2 arg2 python myscript --arg2 arg2 --arg1 arg1

을하지만, 다음과 실패 :

그래서 다음과 같은 작업을해야합니다

당신이 뭔가가 필요 할 경우 내가 argparse에서, 무엇을 말할 수에서 python myscript arg1 arg2 python myscript --madeUpArg arg1 --arg2 arg2

, 그것은된다 위치 인수, 그래서 내가 실패하려는 두 번째 예제는 성공할 것이다. 원하는 기능을 어떻게 얻을 수 있습니까?

+0

내가 거기에 인수가 위치해야 필요 다소 일반적인 규칙, 그리고 스위치 지적 것 (같은 대시하는 사람'--arg1') 선택해야합니다. 그런 식으로해야한다고 말할 필요는 없지만, 사람들에게 커브 볼을 던져 버리는 것을 알아야합니다. 말하자면, 프로그램이 비 위치 적 주장을 요구하지 않을 수도 있습니다. –

+0

이 '필수'문단은 '위치 정보'라고 말하지 않습니다. https://docs.python.org/3/library/argparse.html#required. 'required' 매개 변수를 실험 해 보셨습니까? – hpaulj

+0

'help_'가 네임드 인자를 어떻게 이름 붙이는 지 싫다면'argument_group' https://docs.python.org/3/library/argparse.html#argument-groups를 사용하십시오. – hpaulj

답변

3

parse_known_args을 명시 적으로 호출하지 않는 한 정의하지 않은 인수는 허용되지 않습니다.

선택적 인수가 필요하게하려면 정의 할 때 required 키워드 인수를 사용하십시오.

p = argparse.ArgumentParser() 
p.add_argument("--arg1", required=True) 
p.add_argument("--arg2", required=True) 
+0

나를 혼란스럽게 만들었던 부분은 인수 파서가 기본적으로 인수에 대해 모호하지 않은 접두사를 허용한다는 것입니다. 예 : 인자 하나가'--arg1'이라면'--ar'을 받아 들일 것입니다. 이것은 내가 적절한 주장을 요구하지 않는다고 생각하게했다. – Andrew

관련 문제