argparse.ArgumentParser()
import
argparse
parser객체
=argparse.ArgumentParser()
parser객체
.add_argument(...)
description
, epilog
parser
=
argparse.ArgumentParser
(
description
=
" "
,
epilog
=
"
%(prog)s
")
객체.add_argument()
'-<opt>'
parser = argparse.ArgumentParser()
parser.add_argument('-l', dest='length')
args = parser.parse_args()
pkg_dir = args.length
'--<option>'
parser = argparse.ArgumentParser()
parser.add_argument('-l','--length')
args = parser.parse_args()
pkg_dir = args.length
'Arg'
parser = argparse.ArgumentParser()
parser.add_argument('packagesdir')
args = parser.parse_args()
pkg_dir = args.packagesdir
import argparse
def parsing():
parser = argparse.ArgumentParser()
parser.add_argument("-g", "--graph", help="create graph", action="count")
args=parser.parse_args()
print(args.graph)
parser = argparse.ArgumentParser()
parser.add_argument('packagesdir')
args = parser.parse_args()
pkg_dir = args.packagesdir
args.target
에 Argument가 저장된다.True
를 대입하고 지정하지 않으면 False
를 대입parser = argparse.ArgumentParser()
parser.add_argument('--checksum', action='append', dest='checksum', choices=['md5', 'sha256'])
args = parser.parse_args()
checksum = args.checksum if args.checksum else ['md5']
# ==== 출력 ==== #
usage: <prorgam> [--checksum {md5,sha256}]
import argparse
parser=argparse.ArgumentParser()
parser.add_argument('-G', help="app args 7", default=None)
args=parser.parse_args()
G = args.G == None if None else args.G
metavar
-h
시, 위와 같이 표현된다.nargs
nargs
키워드 인자는 다른 수의 명령행 인자를 하나의 액션으로 연결한다.정수
: 명령행에서 정수
개의 인자를 모아서 리스트에 넣는다.parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs=2)
parser.add_argument('bar', nargs=1)
parser.parse_args('c --foo a b'.split())
Namespace(bar=['c'], foo=['a', 'b'])
nargs=1
은 하나의 항목을 갖는 리스트를 생성한다.?
. 가능하다면, 한 인자가 명령행에서 소비되고, 단일 항목으로 생성된다.default
값이 생성된다.-
옵션 문자열은 있지만, 명령행 인자가 따라붙지 않는 경우이다. 이 경우 const
값이 생성된다.parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='?', const='c', default='d')
parser.add_argument('bar', nargs='?', default='d')
parser.parse_args(['XX', '--foo', 'YY'])
Namespace(bar='XX', foo='YY')
parser.parse_args(['XX', '--foo'])
Namespace(bar='XX', foo='c')
Parser.parse_args([])
Namespace(bar='d', foo='d')
nargs='?'
의 흔한 사용법 중 하나는 선택적 입출력 파일을 허용하는 것입니다:parser = argparse.ArgumentParser()
parser.add_argument('infile', nargs='?', type=argparse.FileType('r'),
default=sys.stdin)
parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'),
default=sys.stdout)
parser.parse_args(['input.txt', 'output.txt'])
Namespace(infile=<_io.TextIOWrapper name='input.txt' encoding='UTF-8'>,
outfile=<_io.TextIOWrapper name='output.txt' encoding='UTF-8'>)
parser.parse_args([])
Namespace(infile=<_io.TextIOWrapper name='<stdin>' encoding='UTF-8'>,
outfile=<_io.TextIOWrapper name='<stdout>' encoding='UTF-8'>)
*
: 모든 명령행 인자를 리스트로 수집한다.nargs='*'
를 사용하는 것은 별로 의미가 없지만,nargs='*'
를 여러 개의 선택 인자는 가능하다.parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='*')
parser.add_argument('--bar', nargs='*')
parser.add_argument('baz', nargs='*')
parser.parse_args('a b --foo x y --bar 1 2'.split())
Namespace(bar=['1', '2'], baz=['a', 'b'], foo=['x', 'y'])
'+'
'*'
와 같이, 존재하는 모든 명령행 인자를 리스트로 모읍니다. 또한, 적어도 하나의 명령행 인자가 제공되지 않으면 에러 메시지가 만들어집니다. 예를 들면:
parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('foo', nargs='+')
parser.parse_args(['a', 'b'])
Namespace(foo=['a', 'b'])
parser.parse_args([])
usage: PROG [-h] foo [foo ...]
PROG: error: the following arguments are required: foo
nargs 키워드 인자가 제공되지 않으면, 소비되는 인자의 개수는 action 에 의해 결정됩니다. 일반적으로 이는 하나의 명령행 인자가 소비되고 하나의 항목(리스트가 아닙니다)이 생성됨을 의미합니다.
Usage: program [-v | -q] : -v나 -q 중 둘 중 하나만 사용
import argparse
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", action="store_true")
group.add_argument("-q", "--quiet", action="store_true")
args=parser.parse_args()
args
라는 Namespace
에 자동으로 파싱된 args
들이 담긴다.--build-no
옵션의 Namespace가 args.build_no
로 저장된다.#!/usr/bin/python3
import argparse
def parsing():
parser = argparse.ArgumentParser()
parser.add_argument("-s", "--scenario", help="Execute scenario", required=True)
args = parser.parse_args()
print(args.scenario)
if __name__ == "__main__" :
parsing()
group
을 활용하여, dry-run, required 중 하나 사용하기객체.add_subparsers
: 서브커맨드import argparse
parser = argparse.ArgumentParser(description="OpenEmbedded pkgdata tool",\
epilog="Use %(prog)s <subcommand> --help to get help on a specific command")
subparsers = parser.add_subparsers(title='subcommands', metavar='<subcommand>')