Python argparse:“;“未被认可的论点”;

Python argparse:“;“未被认可的论点”;,python,command-line,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

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

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
)运行我的程序时,我希望从升级过程开始得到消息
,但相反,我得到了错误消息
未识别的参数-u

,您得到的错误是因为
-u
在它之后需要一个值。如果您使用
pythonscript.py-h
,您将在用法声明中找到它,上面写着
[-u升级]

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

parser.add_argument("-u","--upgrade", help="fully automatized upgrade", action="store_true")
操作
-在命令行遇到此参数时要采取的基本操作类型

使用
action=“store_true”
,如果指定了选项
-u
,则值true将分配给
参数。升级
。不指定它意味着False


来源:

当前,您的参数也需要为其传入一个值

如果希望将
-u
作为选项,请使用for不需要值的参数

范例-

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

对于布尔参数,请使用action=“store\u true”:


请参阅:

我没有看到任何错误消息,我正在收到您的ExpecpExpected输出;我想这可能是因为程序中的空格,请验证[viswesn.viswesn PC]➤ python script.py-u 10从升级过程开始[viswesn.viswesn PC]➤ python script.py-u用法:script.py[-h][-u-UPGRADE]script.py:错误:参数-u/--UPGRADE:应为一个参数此处唯一的问题是
-u
应为一个值或某种类型。尝试执行
python myscript.py-u True
parser.add_argument("-u","--upgrade", help="fully automatized upgrade", action="store_true")