Python argparse:"无法识别的参数"

时间:2015-07-17 06:46:01

标签: python command-line

我正在尝试使用命令行选项使用我的程序。这是我的代码:

import argparse

def main():

    parser = argparse.ArgumentParser()
    parser.add_argument("-u","--upgrade", help="fully automatized upgrade")
    args = parser.parse_args()

    if args.upgrade:
        print "Starting with upgrade procedure"
main()

当我尝试从终端(python script.py -u)运行我的程序时,我希望收到消息Starting with upgrade procedure,但我收到错误消息unrecognized arguments -u

3 个答案:

答案 0 :(得分:14)

您得到的错误是因为-u预期会有一些值。如果您使用python script.py -h,则会在使用声明中找到[-u UPGRADE]

如果要将其用作布尔值或标志(如果使用-u,则为true),添加其他参数action

parser.add_argument("-u","--upgrade", help="fully automatized upgrade", action="store_true")

action - 在命令行遇到此参数时要采取的基本操作类型

使用action="store_true",如果指定了选项-u,则将值True分配给args.upgrade。不指定它意味着False。

来源:Python argparse documentation

答案 1 :(得分:3)

目前,您的参数也需要传入一个值。

如果您想要-u作为选项,请使用action='store_true'作为不需要值的参数。

示例 -

parser.add_argument("-u","--upgrade", help="fully automatized upgrade", action='store_true')

答案 2 :(得分:3)

对于布尔参数,使用action =" store_true":

parser.add_argument("-u","--upgrade", help="fully automatized upgrade", action="store_true")

请参阅:https://docs.python.org/2/howto/argparse.html#introducing-optional-arguments