반응형
질문
나는 다음과 같이 사용할 수 있는 스크립트가 있습니다:
usage: installer.py dir [-h] [-v]
dir
은 다음과 같이 정의된 위치 인수입니다:
parser.add_argument('dir', default=os.getcwd())
나는 dir
이 선택 사항이 되기를 원합니다: 지정되지 않은 경우에는 cwd
가 되어야합니다.
불행히도, dir
인수를 지정하지 않으면 Error: Too few arguments
가 발생합니다.
답변
nargs='?'
를 사용하십시오. (nargs='?'
) (또는 nargs='*'
을 사용하여 둘 이상의 디렉토리가 필요한 경우)
parser.add_argument('dir', nargs='?', default=os.getcwd())
확장된 예:
>>> import os, argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('-v', action='store_true')
_StoreTrueAction(option_strings=['-v'], dest='v', nargs=0, const=True, default=False, type=None, choices=None, help=None, metavar=None)
>>> parser.add_argument('dir', nargs='?', default=os.getcwd())
_StoreAction(option_strings=[], dest='dir', nargs='?', const=None, default='/home/vinay', type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args('somedir -v'.split())
Namespace(dir='somedir', v=True)
>>> parser.parse_args('-v'.split())
Namespace(dir='/home/vinay', v=True)
>>> parser.parse_args(''.split())
Namespace(dir='/home/vinay', v=False)
>>> parser.parse_args(['somedir'])
Namespace(dir='somedir', v=False)
>>> parser.parse_args('somedir -h -v'.split())
usage: [-h] [-v] [dir]
positional arguments:
dir
optional arguments:
-h, --help show this help message and exit
-v
반응형
댓글