Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何处理argparse中缺少的参数?_Python_Python 2.7_Argparse_Default Arguments - Fatal编程技术网

Python 如何处理argparse中缺少的参数?

Python 如何处理argparse中缺少的参数?,python,python-2.7,argparse,default-arguments,Python,Python 2.7,Argparse,Default Arguments,我需要做以下工作: if脚本变量没有参数test==False elif存在参数-t或-test变量test==True else还有另一个参数将它们作为字符串获取并传递给第三个代码 现在我犯了一个错误: # ./cli something usage: cli [-t] cli: error: unrecognized arguments: something 我的前两步代码: import argparse parser = argparse.ArgumentParser(add_help

我需要做以下工作:

  • if
    脚本变量没有参数
    test==False
  • elif
    存在参数
    -t
    -test
    变量
    test==True
  • else
    还有另一个参数将它们作为字符串获取并传递给第三个代码
  • 现在我犯了一个错误:

    # ./cli something
    usage: cli [-t]
    cli: error: unrecognized arguments: something
    
    我的前两步代码:

    import argparse
    parser = argparse.ArgumentParser(add_help=False)
    parser.add_argument('-t', '--test', action="store_true")
    args = parser.parse_args()
    if args.test is True:
        intro = None
    

    在argparse中,您需要将其作为单独的参数,例如:

    import argparse
    parser = argparse.ArgumentParser(add_help=False)
    parser.add_argument('-t', '--test', action="store_true")
    parser.add_argument('params', nargs='+')
    args = parser.parse_args()
    if args.test is True:
        intro = None
    elif args.params:
        pass  # process the params here
    else:
        pass  # no params whatsoever
    

    永远不要使用
    is
    而不是
    =
    来测试是否相等:如果args.test为True,不要说
    你可以说
    如果args.test
    在以下情况下应该属于
    -t
    什么:
    cli-t first second
    <代码>第一个和
    第二个
    ?如果条件不清楚,您可以选择
    。向我们展示几个预期的用例,以及您希望
    args
    名称空间的外观。@smci。始终对单例使用
    is
    ,如无。同意你的第二句话。