python argparse
4531 ワード
# -*- coding: utf-8 -*-
import argparse
args = "-f hello.txt -n 1 2 3 -x 100 -y b -z a -q hello @args.txt i_am_bar -h".split()
# @args.txt fromfile_prefix_chars="@"
# args.txt , convert_arg_line_to_args()
# ArgumentParser
## description - , ,
# epilog -
# prog - (default: sys.argv[0]) , , , help , %(prog)s
# prefix_chars - , -, -f/--file。 /f , prefix_chars="/"
# fromfile_prefix_chars - (default: None) , 。 , fromfile_prefix_chars='@', "@args.txt",args.txt
# add_help - -h/-help (default: True), help , 。
## parents - list, parser parser , parents , parents=[parent_parser]
## formatter_class - (description epilog)。 。
# :
# class argparse.RawDescriptionHelpFormatter description epilog ( )
# class argparse.RawTextHelpFormatter description epilog add_argument help ( )
## class argparse.ArgumentDefaultsHelpFormatter , 。 !
# argument_default - (default: None) , , ,
# usage - (default: generated) usage (usage: PROG [-h] [--foo [FOO]] bar [bar ...]), , 。
# conflict_handler - 。 , add_argument , 。
# ##
parser = argparse.ArgumentParser(description="This is a description of %(prog)s", epilog="This is a epilog of %(prog)s", prefix_chars="-+", fromfile_prefix_chars="@", formatter_class=argparse.ArgumentDefaultsHelpFormatter)
# ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
# add_argument 。。。
# name or flags - , , , , , "-f", "--file"
# , , ,
parser.add_argument("-f", "--file", help="test test test")
# , "prog i_am_bar", ,i_am_bar bar ,
parser.add_argument("bar", help="test test test")
# nargs - value , , -n 1 2 3 4, n [1, 2, 3, 4]
parser.add_argument("-n", "--num", nargs="+", type=int)
# nargs="+" , -n , -n ,+ ,? 0 ,*0 ,
# default - , default
parser.add_argument("+g", "++gold", help="test test test", default="test_gold")# prefix_chars "+"
# type - ( float, int or file ),
parser.add_argument("-x", type=int)
# choices - , choices , type
parser.add_argument("-y", choices=['a', 'b', 'd'])
# required - -f , required=True
parser.add_argument("-z", choices=['a', 'b', 'd'], required=True)
# metavar - , .
parser.add_argument("-o", metavar="OOOOOO")
# help -
# dest -
parser.add_argument("-q", dest="world")
args = parser.parse_args(args) # args , sys.argv, 。 ,
# args.world -q
# action - The basic type of action to be taken when this argument is encountered at the command line.
# const - A constant value required by some action and nargs selections.
# ,
# http://docs.python.org/library/argparse.html
print args
この複雑なコード、最後に出力されるヘルプ情報は(コマンドラインに-hオプションがあればヘルプ情報を出力して終了しますよ)
usage: argparse_sample.py [-h] [-f FILE] [-n NUM [NUM ...]] [+g GOLD] [-x X]
[-y {a,b,d}] -z {a,b,d} [-o OOOOOO] [-q WORLD]
bar
This is a description of argparse_sample.py
positional arguments:
bar test test test
optional arguments:
-h, --help show this help message and exit
-f FILE, --file FILE test test test (default: None)
-n NUM [NUM ...], --num NUM [NUM ...]
+g GOLD, ++gold GOLD test test test (default: test_gold)
-x X
-y {a,b,d}
-z {a,b,d}
-o OOOOOO
-q WORLD
This is a epilog of argparse_sample.py