파이썬 2.7을 사용하고 있으며 argparse를 사용하여 동작을 수행하려고합니다. 일반적으로 Python 2.7에서 argparse의 서브 파서를 옵션으로 사용하는 방법을 찾지 못하는 것으로 보입니다. 내 문제를 설명하기가 어려워서 프로그램에서 필요한 것을 설명 할 것입니다. 추가 인수는 특정 작업을 실행합니다 (각 명령은 그 자체가 추가 인수의가) 주어진 명령으로 프로그램을 시작Python 2.7에서 Argparse 모듈을 사용하여 기본 서브 파서를 설정하는 방법
- :
이 프로그램은 작업의 2 가지 모드가 있습니다.
- 명령을 사용하지 않고 프로그램을 시작하면 셸 같은 프로그램이 시작됩니다.이 프로그램은 인수 행을 취할 수 있으며 지정된 행을 인수로 사용하여 프로그램이 호출 된 것처럼 처리합니다. 예를 들어 내 프로그램 'CMD1'와 'CMD2'명령을 지원하는 경우
그래서, 난 그렇게처럼 사용할 수 있습니다
python program.py cmd1 additional_args1
python program.py cmd2 additional_args2
또는 쉘을 모드 :
quit
또한
cmd1 additional_args1
cmd2 additional_args2
- , 나는 또한 내 프로그램은 모든 명령에 영향을 것이다 옵션 글로벌 인수를 할 수 있어야합니다. 내가 지금처럼 argparse 사용하고 있는데 그 내용은 (이것은 순수한 예입니다) :
parser = argparse.ArgumentParser(description="{} - Version {}".format(PROGRAM_NAME, PROGRAM_VERSION)) parser.add_argument("-i", "--info", help="Display more information") subparsers = parser.add_subparsers() parserCmd1 = subparsers.add_parser("cmd1", help="First Command") parserCmd1.set_defaults(func=cmd1) parserCmd2 = subparsers.add_parser("cmd2", help="Second Command") parserCmd2.add_argument("-o", "--output", help="Redirect Output") parserCmd2.set_defaults(func=cmd2)
그래서 호출 할 수 있습니다 (추가 인수에) CMD1 또는 CMD2 (또는 -o 플래그없이). 그리고 둘 다 플래그 -i를 추가하여 호출 된 명령의 더 많은 정보를 표시 할 수 있습니다.
이- 내가 파이썬을 사용할 수 없습니다
내 문제는 내가 인수로 CMD1 또는 CMD2을 제공하기 때문에 나는
제한 (때문에 필수 subparsers를 사용), 쉘 모드를 활성화 할 수 있다는 것입니다 3 (쉽게 수행 할 수 있음을 알고 있습니다)
- 글로벌 선택적 인수 때문에 arg 구문 분석을 건너 뛰는 인수가 없는지 확인할 수 없습니다. 내가 argparse과 파이썬 2.7과 행동의이 종류를 달성 할 수있는 방법 그래서 모든
에서 어떤 명령을 제공하지 않는 경우
내가 쉘을 호출하는 새로운 명령을 추가하지 않으
- 내가 파이썬을 사용할 수 없습니다
- , 그것은해야합니다?
그냥 빨리 메모 - subparsers는 선택 사항이라는 사실은 버그입니다. 그들은 (예전 위치에서와 같이) 요구되었지만, 몇 년 전과 무관 한 변화에서, 서브 파서들은 균열을 빠져 나갔다. 이 점에서 Py2와 Py3의 차이점을 왜 생각하는지 이해하기 위해 질문을 자세히 조사해야합니다. – hpaulj