import argparse
parser = argparse.ArgumentParser(description="calculate X to the power of Y")
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", action="store_true") # 命令行中有这个命令,后面args.verbose就对应为true
group.add_argument("-q", "--quiet", action="store_true")
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
args = parser.parse_args()
answer = args.x**args.y
if args.quiet:
print(answer)
elif args.verbose:
print("{} to the power {} equals {}".format(args.x, args.y, answer))
else:
print("{}^{} == {}".format(args.x, args.y, answer))
参考
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
定义单个的命令行参数应当如何解析。每个形参都在下面有它自己更多的描述,长话短说有:
name or flags - 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。
action - 当参数在命令行中出现时使用的动作基本类型。
nargs - 命令行参数应当消耗的数目。
const - 被一些 action 和 nargs 选择所需求的常数。
default - 当参数未在命令行中出现时使用的值。
type - 命令行参数应当被转换成的类型。
choices - 可用的参数的容器。
required - 此命令行选项是否可省略 (仅选项可用)。
help - 一个此选项作用的简单描述。
metavar - 在使用方法消息中使用的参数值示例。
dest - 被添加到 parse_args() 所返回对象上的属性名。
import argparse
hdfs_path = "/usr"
local_path = '/usr'
argv = ["--input_local_path", hdfs_path + "/roadtrip",
"--local_meta_path", local_path + "/meta",
"--epochs", "5",
"--batch_size", "36",
"--label_config_file", local_path + "/meta/label_config.json"]
parser = argparse.ArgumentParser() # 默认'-'
parser.add_argument("--input_local_path", required=True, metavar="" ) # metavar 在-h时可以给一个示例
parser.add_argument("--local_meta_path", required=True, metavar="" )
parser.add_argument("--learning_rate", default=1e-2, metavar="" , type=float)
parser.add_argument("--regularizers_weight", default=1e-3, metavar="" , type=float)
parser.add_argument("--epochs", default=100, metavar="" , type=int)
parser.add_argument("--batch_size", default=128, metavar="" , type=int)
parser.add_argument("--label_config_file", required=True, metavar="" )
parser.add_argument("--model_sub_name", default="", metavar="" )
args = parser.parse_args(argv)
print(args)
# 输出
# Namespace(batch_size=36, epochs=5, input_local_path='/usr/roadtrip', label_config_file='/usr/meta/label_config.json', learning_rate=0.01, local_meta_path='/usr/meta', model_sub_name='', regularizers_weight=0.001)
# python argparser.py -h
# usage: argparser.py [-h] --input_local_path --local_meta_path
# [--learning_rate ]
# [--regularizers_weight ] [--epochs ]
# [--batch_size ] --label_config_file
# [--model_sub_name ]
#
# optional arguments:
# -h, --help show this help message and exit
# --input_local_path
# --local_meta_path
# --learning_rate
# --regularizers_weight
# --epochs
# --batch_size
# --label_config_file
# --model_sub_name
参考