파이썬의 argparse
을 사용하여 명령 행 인수를 지원하는 readfile.py
이라는 간단한 프로그램이 있다고 가정 해 보겠습니다.파이썬 argparse : nargs = '?' 선택적 인수들
프로그램은 위치 인수 input
에 의해 지정된 파일에서 읽습니다. 추가 인수를 지정하지 않으면이 프로그램은 그리 흥미 진진하지 않습니다. 은 input
에서 읽고 종료됩니다. 선택적 인수 --output [OUTPUT_FILE]
은 입력 파일을 파일에 기록해야 함을 의미합니다. OUTPUT_FILE
도 선택 사항입니다. 지정되지 않으면 입력은 default.out
에 기록되어야합니다. --ouput
명령 줄에 표시되지 않는 경우에 것을, 내가 없음과의 부재를 감지 할 수 있도록 내가 default=None
를 사용
parser = argparse.ArgumentParser(description='Read from a file')
parser.add_argument(
'input',
help='file to read from')
parser.add_argument(
'--output',
nargs='?',
const='default.out',
default=None,
help="""write file to %(metavar)s. If %(metavar)s isn't
specified, write file to %(const)s.""",
metavar='OUTPUT_FILE')
args = parser.parse_args()
return args.file, args.output_file
참고 :
는이 같은 내 인수 파서를 설정합니다.
usage: readfile.py [-h] [--output [OUTPUT_FILE]] input
이것은 내가 실행하는 경우
python readfile.py input.in --output somefile.out
또는
이python readfile.py --output somefile.out input
그것은 default.out
에 output
을 설정 실행하면 예상대로 인수를 처리합니다 이와 같은 사용 서명을 제공
python readfile.py input.in --output
하지만
python readfile.py --output input.in
를 실행하는 경우가 너무 적은 인수 것에 대해이 뿌려줍니다. argparse가 input.in
과 output
에서 default.out
으로 설정하여이 패턴을 해석 할만큼 충분히 똑똑하다고 생각했습니다. 생성 된 사용법은 이것을 제안합니다.
나는 뭔가를 놓친가요?
누구든지이 질문에 대해 의견을 제시하는 데 최소한 건설적인 힌트를 남겨 두어야합니다. – cfi