답변:
사용 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
+
. 자세한 내용은 docs.python.org/2/library/argparse.html#nargs 를 참조 하십시오.
options.dir
하지 마십시오 args.dir
!
@VinaySajip의 확장으로 대답하십시오. 언급 할만한 추가 nargs
가치가있다 .
parser.add_argument('dir', nargs=1, default=os.getcwd())
N (정수). 명령 행에서 N 개의 인수가 함께 목록으로 수집됩니다.
parser.add_argument('dir', nargs='*', default=os.getcwd())
'*'. 존재하는 모든 명령 행 인수는 목록으로 수집됩니다. 로nargs='*'
여러 개의 위치 인수를 갖는 것이 일반적으로 의미가 없지만 여러 개의 선택적 인수를 nargs='*'
사용할 수 있습니다.
parser.add_argument('dir', nargs='+', default=os.getcwd())
'+'. '*'와 마찬가지로 존재하는 모든 명령 행 인수는 목록으로 수집됩니다. 또한 하나 이상의 명령 줄 인수가 없으면 오류 메시지가 생성됩니다.
parser.add_argument('dir', nargs=argparse.REMAINDER, default=os.getcwd())
argparse.REMAINDER
. 나머지 모든 명령 줄 인수는 목록으로 수집됩니다. 이것은 일반적으로 다른 명령 행 유틸리티로 디스패치하는 명령 행 유틸리티에 유용합니다.
는 IF nargs
키워드 인수가 제공되지 않는 인수의 수는 작용에 의해 결정된다 소비했다. 일반적으로 이것은 단일 명령 행 인수가 소비되고 단일 항목 (목록이 아님)이 생성됨을 의미합니다.
편집 (@Acumenus의 코멘트에서 복사) nargs='?'
문서 는 '?'라고 말합니다. 가능하면 하나의 인수가 명령 행에서 사용되어 단일 항목으로 생성됩니다. 명령 줄 인수가 없으면 기본값의 값이 생성됩니다.
nargs='?'
목록을 생성하지는 않습니다.
Generally this means a single command-line argument will be consumed and a single item (not a list) will be produced.
희망이 ...하는 데 도움이
parser.add_argument
또한 스위치가 필요합니다 . 사용할 수 있습니다 required=False
. 다음은 Python 2.7의 샘플 스 니펫입니다.
parser = argparse.ArgumentParser(description='get dir')
parser.add_argument('--dir', type=str, help='dir', default=os.getcwd(), required=False)
args = parser.parse_args()
?
하고*
그들이 정규 표현식 (즉,에 의미 같은 것을 의미하는?
0 또는 1을 필요로*
0을 필요 이상)? 그렇다면+
잘 작동합니까?