일부 argparse 코드를 테스트하고 있습니다. 선택 목록에서 n
개의 입력을 수집하는 선택적 인수가 필요했습니다. 그래서, 내가 쓴이와argparse로 인터프리터를 죽입니다.
import argparse
modules = ["geo", "loc"]
parser = argparse.ArgumentParser()
parser.add_argument("--modules", nargs='*', choices=modules)
는 설정, 나는 확실하게 완전히 인터프리터를 죽일 수 있어요.
당신이 인수의 유효한 세트를 전달하면 그것은 잘 작동 :
>>> parser.parse_args("--module geo loc geo".split())
Namespace(modules=['geo', 'loc', 'geo'])
당신이 미스 형성 인수를 전달한다면, 그것은 파이썬이 완전히 죽이기 :
는>>> parser.parse_args("--module geo metro".split())
usage: [-h] [--modules [{geo,loc} [{geo,loc} ...]]]
: error: argument --modules: invalid choice: 'metro' (choose from 'geo', 'loc')
PS C:\Users\myname\mycode>
내 질문은 2 차원입니다 fold :
- 이 예상되는 동작입니까? 그렇다면이 이유는 무엇입니까?
- 내 프로그램이 부적절한 주장으로 인해 죽을지라도이 코드를 사용해도 될까요? 아니면 이것을 피할만한 이유가 있습니까? 파이썬 스크립트를 명령 줄에서 실행할 때 참고로
, 나는 윈도우 7
'parser_args'는'sys.exit'를 호출하는'error' 함수를 호출합니다. 그래서 당신은 그 행동을 얻습니다. – mmgp