Python getopt / optparse可选命令行参数处理

Python getopt/optparse optional command line parameter handling

本问题已经有最佳答案,请猛点这里访问。

我用python完成了一个脚本的编写,现在还停留在界面上,这需要从用户那里获得一些选项,但不确定获得可选参数的最佳方法是什么。代码如下…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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]
"
)
                print ("test -i <install>[filename]
"
)
                .....
                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的默认可选路径),如果没有提供,从用户那里获取??目前我必须提供/测试-I我怎样才能省去文件名,像这样打电话呢/测试-I我又一次陷入同样的问题,我的开发环境是python 2.6,由于这些限制,现在使用optparse,但是有同样的问题,我必须支持一个可选参数,除了手动解析sys.argv之外,我找不到其他方法,我有几乎10个不同的选项,如果我能处理一个可选参数,我的scri对终端用户来说,PT会更方便。


来自:http:/ / / 2 /图书馆/ getopt.html docs.python.orggetopts不支持可选参数。

你可以在代码中使用argparse写作?以下是一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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)
...

参考:http:/ / / /图书馆/ argparse.html docs.python.org 2.7