Argparse 옵션 위치 인수?
이 있어요.usage: installer.py dir [-h] [-v]
dir
parser.add_argument('dir', default=os.getcwd())
나는 그 것을 원한다.dir
경우 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 입니다.cwd
.
도 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★dir
하다.Error: Too few arguments
.
사용(또는nargs='*'
dir가 dir를 지정합니다.
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
@VinaySajip answer의 확장자.언급할 가치가 있는 추가 사항이 있습니다.
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())
+. '*'와 마찬가지로 존재하는 모든 명령줄 arg가 목록으로 수집됩니다.또한 명령줄 인수가 하나 이상 존재하지 않으면 오류 메시지가 생성됩니다.
parser.add_argument('dir', nargs=argparse.REMAINDER, default=os.getcwd())
argparse.REMAINDER
나머지 명령줄 인수는 모두 목록으로 수집됩니다.은 일반적으로 이 됩니다.
경우,nargs
키워드 인수는 제공되지 않습니다.사용되는 인수 수는 액션에 따라 결정됩니다.일반적으로 이는 단일 명령줄 인수가 소비되고 단일 항목(목록이 아님)이 생성됨을 의미합니다.
)(@Acmenus 코멘트에서 복사) nargs='?'
의사는 '?'라고 말한다.가능하면 명령줄에서 하나의 인수가 소비되어 단일 항목으로 생성됩니다.명령줄 인수가 없는 경우 기본값에서 값이 생성됩니다.
단답
인수는 positional 인수가 있는 옵션의 는 "2" 입니다.nargs='?'
'아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아.Path
하고 cwd를 cwd로 .
다음 중 하나:
myfile.py
import argparse
import pathlib
parser = argparse.ArgumentParser()
parser.add_argument("dir", nargs="?", default=".", type=pathlib.Path)
parsed_args = parser.parse_args()
print("Installing to", parsed_args.dir.resolve())
$ python myfile.py
Installing to /users/myname/myfolder
$ python myfile.py /usr/bin/
Installing to /usr/bin
더 긴 답변
의 True 옵션도 True/False 옵션도 언급하고 .-h
★★★★★★★★★★★★★★★★★」-v
질문에는 다음과 같은 예가 도움이 될 수 있습니다.
★★★★★★★★★★★★★★★★★★★★★★:-v
)
인수를 사용하지 않는 옵션 옵션을 "플래그"라고 할 수 있습니다.깃발을 가지고 우리는 깃발을 주느냐 마느냐에만 신경을 쓴다. -h
argparse가 (긴 버전과 함께) 자동으로 추가하는 플래그입니다.--help
)그러니까 그걸 덮어쓰면 안 돼요우리가 고려한다면-v
그리고나서,
myfile.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
"-v",
"--version",
action="store_true")
parsed_args = parser.parse_args()
if parsed_args.version:
print("version flag given")
else:
print("version flag not given")
두 번째 인수는add_argument()
는 옵션의 긴 이름입니다.필수는 아니지만 후속 코드를 더 쉽게 읽을 수 있습니다(parsed_args.version
대parsed_args.v
를 참조해, 인스톨러에의 콜을 보다 명확하게 합니다.
$ python myfile.py -v
version flag given
$ python myfile.py --verbose
version flag given
$ python myfile.py
version flag not given
옵션 인수(예:--installdir /usr/bin/
)
어떤 사람은 당신의 경우, 당신이 위치적인 논쟁보다는 선택적인 논쟁을 하는 것이 더 나을 것이라고 주장할 수 있다.
myfile.py
import argparse
import pathlib
parser = argparse.ArgumentParser()
parser.add_argument(
"-i",
"--installdir", # Optional (but recommended) long version
type=pathlib.Path,
default="/bin"
)
parsed_args = parser.parse_args()
print("Installing to", parsed_args.installdir)
$ python myfile.py -i /usr/bin/
Installing to /usr/bin
$ python myfile.py --installdir /usr/bin/
Installing to /usr/bin
$ python myfile.py
Installing to /bin
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()
언급URL : https://stackoverflow.com/questions/4480075/argparse-optional-positional-arguments
'programing' 카테고리의 다른 글
django Forms에서 css 클래스를 정의합니다. (0) | 2023.01.20 |
---|---|
Centos 6.5 X86_64에 MariaDB 설치 (0) | 2023.01.20 |
판다 시리즈에서 원소 색인 찾기 (0) | 2023.01.20 |
Java 언어에서는 바이트 코드 기능을 사용할 수 없습니다. (0) | 2023.01.20 |
Python 메서드에서 "self" 인수가 명시적으로 필요한 이유는 무엇입니까? (0) | 2023.01.20 |