programing

Argparse 옵션 위치 인수?

goodcopy 2023. 1. 20. 16:24
반응형

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의 확장자.언급할 가치가 있는 추가 사항이 있습니다.

  1. parser.add_argument('dir', nargs=1, default=os.getcwd())

N(정수).명령줄에서 N개의 인수가 목록으로 수집됩니다.

  1. parser.add_argument('dir', nargs='*', default=os.getcwd())

'*.' 존재하는 모든 명령줄 인수가 목록으로 수집됩니다.주의: 일반적으로 여러 가지 위치 논쟁을 하는 것은 별로 의미가 없습니다.nargs='*' , , , , , , , , , , , , , , , , , , , , , , 를 포함한 의 옵션 .nargs='*'능합니니다다

  1. parser.add_argument('dir', nargs='+', default=os.getcwd())

+. '*'와 마찬가지로 존재하는 모든 명령줄 arg가 목록으로 수집됩니다.또한 명령줄 인수가 하나 이상 존재하지 않으면 오류 메시지가 생성됩니다.

  1. 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)

인수를 사용하지 않는 옵션 옵션을 "플래그"라고 할 수 있습니다.깃발을 가지고 우리는 깃발을 주느냐 마느냐에만 신경을 쓴다. -hargparse가 (긴 버전과 함께) 자동으로 추가하는 플래그입니다.--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.versionparsed_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

반응형