【发布时间】:2021-02-28 10:39:32
【问题描述】:
我有一个 python 解析参数,如下所示:
代码:
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Args test')
parser.add_argument('-myarg1', '--myarg1', type=str, dest='myarg1', required=True, help='Help yourself')
parser.add_argument('-myarg2', '--myarg2', type=str, dest='myarg2', default=' ', help='Help yourself')
args = parser.parse_args()
print(args.myarg1)
print(args.myarg2)
如果我像下面这样调用脚本,上面的工作:
python myargs.py -myarg1 something -myarg2 somethingelse
但是如果我这样称呼它就行不通了:
python myargs.py -myarg1 something -myarg2
显然会引发以下错误,因为它希望调用者为第二个参数传递值。
usage: myargs.py [-h] -myarg1 MYARG1 [-myarg2 MYARG2]
myargs.py: error: argument -myarg2/--myarg2: expected one argument
问题:
我理解上面python抱怨它的原因。但是,我希望我的 python 脚本的用户能够调用第二个参数,只需说出 -myarg2 或 --myarg2 而无需指定类型。就像 shell 脚本风格一样。 argparse可以做到吗?
我正在使用 python 2.7 及更高版本。
【问题讨论】:
-
myarg2的期望值类型是什么?
-
我更新了值类型。它的海峡。两个参数都是字符串类型
标签: python python-2.7 argparse