2024-04-20 12:28:02 发布
网友
解析Python命令行参数的最简单的方法或库是什么?
这个答案表明optparse适合于较旧的Python版本。对于Python2.7及更高版本,argparse替换optparse。有关详细信息,请参见this answer。
optparse
argparse
正如其他人指出的那样,你最好选择optparse而不是getopt。getopt几乎是标准getopt(3)C库函数的一对一映射,使用起来并不容易。
optparse虽然有点冗长,但结构更好,以后扩展也更简单。
下面是一个典型的行,用于向解析器添加选项:
parser.add_option('-q', '--query', action="store", dest="query", help="query string", default="spam")
它很好地说明了这一点;在处理时,它将接受-q或--query作为选项,将参数存储在一个名为query的属性中,如果您不指定它,它将有一个默认值。它也是自文档化的,因为您可以使用选项在那里声明帮助参数(在使用-h/--help运行时将使用该参数)。
通常用以下语句分析参数:
options, args = parser.parse_args()
默认情况下,这将分析传递给脚本的标准参数(sys.argv[1:])
options.query将被设置为传递给脚本的值。
您只需通过
parser = optparse.OptionParser()
这些都是你需要的基础。下面是一个完整的Python脚本:
import optparse parser = optparse.OptionParser() parser.add_option('-q', '--query', action="store", dest="query", help="query string", default="spam") options, args = parser.parse_args() print 'Query string:', options.query
5行python,向您展示基本知识。
将其保存在sample.py中,并使用
python sample.py
还有一次
python sample.py --query myquery
除此之外,您会发现optparse非常容易扩展。 在我的一个项目中,我创建了一个命令类,允许您轻松地在命令树中嵌套子命令。它大量使用optparse将命令链接在一起。这不是我能简单地用几行话解释的,但是对于主类和a class that uses it and the option parser可以随意地browse around in my repository
自2012年以来,有一个非常简单、功能强大且非常酷的参数解析模块叫做docopt。以下是从其文档中获取的示例:
"""Naval Fate. Usage: naval_fate.py ship new <name>... naval_fate.py ship <name> move <x> <y> [--speed=<kn>] naval_fate.py ship shoot <x> <y> naval_fate.py mine (set|remove) <x> <y> [--moored | --drifting] naval_fate.py (-h | --help) naval_fate.py --version Options: -h --help Show this screen. --version Show version. --speed=<kn> Speed in knots [default: 10]. --moored Moored (anchored) mine. --drifting Drifting mine. """ from docopt import docopt if __name__ == '__main__': arguments = docopt(__doc__, version='Naval Fate 2.0') print(arguments)
这就是:2行代码加上doc字符串是必需的,您可以在arguments对象中解析和使用参数。
自2017年以来,还有一个很酷的模块叫做python-fire。它可以为代码生成一个CLI接口,同时执行zero参数解析。下面是文档中的一个简单示例(这个小程序将函数double公开到命令行):
double
import fire class Calculator(object): def double(self, number): return 2 * number if __name__ == '__main__': fire.Fire(Calculator)
在命令行中,可以运行:
> calculator.py double 10 20 > calculator.py double --number=15 30
^{}是一条路。以下是如何使用它的简短摘要:
1)初始化
import argparse # Instantiate the parser parser = argparse.ArgumentParser(description='Optional app description')
2)添加参数
# Required positional argument parser.add_argument('pos_arg', type=int, help='A required integer positional argument') # Optional positional argument parser.add_argument('opt_pos_arg', type=int, nargs='?', help='An optional integer positional argument') # Optional argument parser.add_argument('--opt_arg', type=int, help='An optional integer argument') # Switch parser.add_argument('--switch', action='store_true', help='A boolean switch')
3)解析
args = parser.parse_args()
4)访问
print("Argument values:") print(args.pos_arg) print(args.opt_pos_arg) print(args.opt_arg) print(args.switch)
5)检查值
if args.pos_arg > 10: parser.error("pos_arg cannot be larger than 10")
正确使用:
$ ./app 1 2 --opt_arg 3 --switch Argument values: 1 2 3 True
错误参数:
$ ./app foo 2 --opt_arg 3 --switch usage: convert [-h] [--opt_arg OPT_ARG] [--switch] pos_arg [opt_pos_arg] app: error: argument pos_arg: invalid int value: 'foo' $ ./app 11 2 --opt_arg 3 Argument values: 11 2 3 False usage: app [-h] [--opt_arg OPT_ARG] [--switch] pos_arg [opt_pos_arg] convert: error: pos_arg cannot be larger than 10
完整帮助:
$ ./app -h usage: app [-h] [--opt_arg OPT_ARG] [--switch] pos_arg [opt_pos_arg] Optional app description positional arguments: pos_arg A required integer positional argument opt_pos_arg An optional integer positional argument optional arguments: -h, --help show this help message and exit --opt_arg OPT_ARG An optional integer argument --switch A boolean switch
这个答案表明
optparse
适合于较旧的Python版本。对于Python2.7及更高版本,argparse
替换optparse
。有关详细信息,请参见this answer。正如其他人指出的那样,你最好选择optparse而不是getopt。getopt几乎是标准getopt(3)C库函数的一对一映射,使用起来并不容易。
optparse虽然有点冗长,但结构更好,以后扩展也更简单。
下面是一个典型的行,用于向解析器添加选项:
它很好地说明了这一点;在处理时,它将接受-q或--query作为选项,将参数存储在一个名为query的属性中,如果您不指定它,它将有一个默认值。它也是自文档化的,因为您可以使用选项在那里声明帮助参数(在使用-h/--help运行时将使用该参数)。
通常用以下语句分析参数:
默认情况下,这将分析传递给脚本的标准参数(sys.argv[1:])
options.query将被设置为传递给脚本的值。
您只需通过
这些都是你需要的基础。下面是一个完整的Python脚本:
5行python,向您展示基本知识。
将其保存在sample.py中,并使用
还有一次
除此之外,您会发现optparse非常容易扩展。 在我的一个项目中,我创建了一个命令类,允许您轻松地在命令树中嵌套子命令。它大量使用optparse将命令链接在一起。这不是我能简单地用几行话解释的,但是对于主类和a class that uses it and the option parser可以随意地browse around in my repository
使用docopt
自2012年以来,有一个非常简单、功能强大且非常酷的参数解析模块叫做docopt。以下是从其文档中获取的示例:
这就是:2行代码加上doc字符串是必需的,您可以在arguments对象中解析和使用参数。
使用python fire
自2017年以来,还有一个很酷的模块叫做python-fire。它可以为代码生成一个CLI接口,同时执行zero参数解析。下面是文档中的一个简单示例(这个小程序将函数
double
公开到命令行):在命令行中,可以运行:
^{} 是一条路。以下是如何使用它的简短摘要:
1)初始化
2)添加参数
3)解析
4)访问
5)检查值
用法
正确使用:
错误参数:
完整帮助:
相关问题 更多 >
编程相关推荐