git commit
및 git status
같은 하위 명령은 add_subparsers
을 사용하여 argparse
으로 쉽게 파싱 할 수 있습니다. 명령 줄에서 선택한 선택 항목에 대해 중첩 된 설정 입력을 얻으려면 어떻게해야합니까?Python 3 : 초기 선택 집합에 대해 중첩 된 보조 인수를 구문 분석
play.py --path /path/to.file --duration 100 --filter 이퀄라이저 --effect 에코 equalizer_settings 1 :
의 내가 모든 사용자 정의 설정을 사용하여 음악을 재생하고 싶은 말은하자 2 echo_settings 여기
5 --filter equalizer
및 --effect echo
은 첫 번째 수준의 선택이다 그러나 나는 차 인수로 그 설정을 얻을 필요가있다. 예 : echo_settings 5
및 equalizer_settings 1 2
.
보조 설정은 둘 이상일 수 있으며 바람직하게는 명명 된 인수를 사용할 수 있습니다. 아래에 나열
는
import argparse
parser = argparse.ArgumentParser(description='Play music the way I want it.')
parser.add_argument('-p', '--path', type=str, required=True, help='File path')
parser.add_argument('-d', '--duration', type=int, default=50, help='Play duration')
parser.add_argument('-f', '--filter', choices=['none', 'equalizer'], default='none', help='Filter selection')
parser.add_argument('-e', '--effect', choices=['none', 'echo', 'surround'], default='none', help='Effect selection')
subparsers = parser.add_subparsers(help='Settings of optional parameters')
equalizer_parser = subparsers.add_parser("equalizer_settings")
equalizer_parser.add_argument('equalizer_min_range', type=int)
equalizer_parser.add_argument('equalizer_max_range', type=int)
echo_parser = subparsers.add_parser("echo_settings")
echo_parser.add_argument('echo_strength', type=int)
surround_parser = subparsers.add_parser("surround_settings")
surround_parser.add_argument('surround_strength', type=int)
args = parser.parse_args()
print(args)
현재
error: unrecognized arguments
나는 이것을 생각했지만, 이것을 구성하는 더 좋은 방법이 있는지 궁금해하고 있었다. 이전 인수에서 선택한 조건에 따라 필요한 인수를 사용할 수 있습니까? 그런 다음 아마도 이것들을 가지고 해결할 수있을 것입니다. – Joel
조건부로 필수 항목을 만드는 가장 쉬운 방법은 구문 분석 후 동시 발생을 확인하는 것입니다. 'parse_args'이므로 모든 필수 검사가 마지막 단계로 수행됩니다. Subparsers는 조건부로 필요한 인수를위한 유일한 기본 제공 도구입니다. – hpaulj