【问题标题】:Python getopt/optparse optional command line parameter handling [duplicate]Python getopt/optparse 可选命令行参数处理[重复]
【发布时间】:2016-08-16 04:36:22
【问题描述】:

我在 python 中完成了一个脚本,现在卡在界面中,这需要从用户那里获得很少的选项,但不确定获取可选参数的最佳方法是什么。 代码如下...

def getOptions(argv):
       try:
            opts,args = getopt.getopt(argv, "hi:c:d:m", ["ifile=", "add=", "delete"])
        except getopt.GetoptError:
            printUsage() 
            sys.exit(2)
        for opt, arg in opts:
            if opt in ("-h", "--help"):
                print ("test -m <make> [src] [dst]\n")
                print ("test -i <install>[filename] \n")
                .....
                sys.exit()
            if opt in ( "-m", "--make"):
                make(arg)
                sys.exit()
            if opt in ("-i","--install"):
                install(arg)
                sys.exit()
            ... # few more options
            else:
                assert False, "unhandled option"

我的问题是我怎样才能省略参数(比如使用 arg 的默认可选路径),如果没有提供,从用户那里获取? 目前我必须提供 ./test -i 我怎样才能省略文件名并调用 ./test -i
我又遇到了同样的问题,我的开发环境是 python 2.6,由于限制,现在使用 optparse 但有同样的问题,我必须支持一个可选参数并且找不到其他方法与手动解析 sys.argv 相比,我有近 10 种不同的选项,如果我可以处理一个可选参数,我的脚本对于最终用户来说会更方便。

【问题讨论】:

    标签: python optional-parameters getopt


    【解决方案1】:

    来自: https://docs.python.org/2/library/getopt.html Getopts 不支持可选参数。

    您可以尝试使用 argparse 编写代码吗?下面是一个例子:

    import argparse
    parser = argparse.ArgumentParser(description='python cli')
    parser.add_argument("-m", "--make", help="execute make", required=True)
    parser.add_argument("-i", "--install", help="execute install", required=True)
    
    # parse input arguments
    args = parser.parse_args()
    
    makeVal = args.make
    shouldInstall = args.install
    
    if makeVal :
        make(makeVal)
    ...
    

    参考: https://docs.python.org/2.7/library/argparse.html

    【讨论】:

      猜你喜欢
      • 2018-05-24
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      • 1970-01-01
      相关资源
      最近更新 更多