Skip to main content

tornado.options —命令行解析

命令行解析模块,允许模块定义自己的选项。

每个模块定义它自己的选项,它们被添加到全局选项命名空间,例如。:

from tornado.options import define, options

define("mysql_host", default="127.0.0.1:3306", help="Main user DB")
define("memcache_hosts", default="127.0.0.1:11011", multiple=True,
       help="Main user memcache servers")

def connect():
    db = database.Connection(options.mysql_host)
    ...

您的应用程序的 main() 方法不需要知道您的程序中使用的所有选项;它们都会在加载模块时自动加载。但是,定义选项的所有模块必须在分析命令行之前导入。

您的 main() 方法可以解析命令行或解析配置文件:

tornado.options.parse_command_line()
# or
tornado.options.parse_config_file("/etc/server.conf")

命令行格式是你期望的(--myoption=myvalue)。配置文件只是Python文件。全局名称成为选项,例如。:

myoption = "myvalue"
myotheroption = "myothervalue"

我们支持 datetimestimedeltas,ints和float(只是将 type kwarg传给 define)。我们还接受多值选项。请参阅下面的 define() 文档。

tornado.options.optionsOptionParser 的单例实例,并且此模块中的顶级函数(defineparse_command_line 等)只是调用它的方法。您可以创建其他 OptionParser 实例来定义独立的选项集,例如子命令。

注解

默认情况下,定义几个选项,将在调用 parse_command_lineparse_config_file 时配置标准 logging 模块。如果你想让Tornado单独留下日志配置,你可以自己管理它,或者在命令行中传递 --logging=none,或者在代码中禁用它:

from tornado.options import options, parse_command_line
options.logging = None
parse_command_line()

在 4.3 版更改: 虚线和下划线在选项名称中可完全互换;选项可以定义,设置和读取两者的任何混合。虚线是典型的命令行使用,而配置文件需要下划线。

全球功能

tornado.options.define(name, default=None, type=None, help=None, metavar=None, multiple=False, group=None, callback=None)[源代码]

在全局命名空间中定义一个选项。

OptionParser.define

tornado.options.options

全局选项对象。所有定义的选项都可用作此对象上的属性。

tornado.options.parse_command_line(args=None, final=True)[源代码]

从命令行解析全局选项。

OptionParser.parse_command_line

tornado.options.parse_config_file(path, final=True)[源代码]

从配置文件解析全局选项。

OptionParser.parse_config_file

tornado.options.print_help(file=sys.stderr)[源代码]

将所有命令行选项打印到stderr(或另一个文件)。

OptionParser.print_help

tornado.options.add_parse_callback(callback)[源代码]

添加一个解析回调,在选项解析完成时调用。

OptionParser.add_parse_callback

exception tornado.options.Error[源代码]

选项模块中的错误引发的异常。

OptionParser类

class tornado.options.OptionParser[源代码]

选项的集合,具有对象类访问的字典。

通常通过引用全局实例的 tornado.options 模块中的静态函数访问。

add_parse_callback(callback)[源代码]

添加一个解析回调,在选项解析完成时调用。

as_dict()[源代码]

所有选项的名称和值。

3.1 新版功能.

define(name, default=None, type=None, help=None, metavar=None, multiple=False, group=None, callback=None)[源代码]

定义新的命令行选项。

如果给定 type (str,float,int,datetime或timedelta中的一个)或者可以从 default 推断,我们将根据给定的类型解析命令行参数。如果 multiple 为True,则接受逗号分隔的值,并且选项值始终为列表。

对于多值整数,我们还接受语法 x:y,它变为 range(x, y) - 对于长整型范围非常有用。

helpmetavar 用于构造自动生成的命令行帮助字符串。帮助消息的格式为:

--name=METAVAR      help string

group 用于将逻辑组中定义的选项分组。默认情况下,命令行选项按定义它们的文件进行分组。

命令行选项名称必须在全局范围内唯一。它们可以从命令行使用 parse_command_line 解析,或者从具有 parse_config_file 的配置文件解析。

如果给出了 callback,每当选项更改时,它都将使用新值运行。这可以用于组合命令行和基于文件的选项:

define("config", type=str, help="path to config file",
       callback=lambda path: parse_config_file(path, final=False))

使用此定义,--config 指定的文件中的选项将覆盖先前在命令行上设置的选项,但可以由稍后的标志覆盖。

group_dict(group)[源代码]

组中选项的名称和值。

用于将选项复制到应用程序设置:

from tornado.options import define, parse_command_line, options

define('template_path', group='application')
define('static_path', group='application')

parse_command_line()

application = Application(
    handlers, **options.group_dict('application'))

3.1 新版功能.

groups()[源代码]

define 创建的选项组集。

3.1 新版功能.

items()[源代码]

一个(名称,值)对的序列。

3.1 新版功能.

mockable()[源代码]

返回与 mock.patch 兼容的self的包装。

mock.patch 函数(包括在标准库 unittest.mock 包中自Python 3.3以来,或在第三方 mock 包中用于旧版本的Python)与覆盖 __getattr____setattr__ 的对象(如 options)不兼容。此函数返回一个可与 mock.patch.object 一起使用以修改选项值的对象:

with mock.patch.object(options.mockable(), 'name', value):
    assert options.name == value
parse_command_line(args=None, final=True)[源代码]

解析命令行中提供的所有选项(默认为 sys.argv)。

请注意,args[0] 被忽略,因为它是 sys.argv 中的程序名称。

我们返回一个未解析为选项的所有参数的列表。

如果 finalFalse,则不会运行解析回调。这对于希望组合来自多个源的配置的应用程序很有用。

parse_config_file(path, final=True)[源代码]

解析并在给定的路径加载Python配置文件。

如果 finalFalse,则不会运行解析回调。这对于希望组合来自多个源的配置的应用程序很有用。

在 4.1 版更改: 配置文件现在总是解释为utf-8,而不是系统默认编码。

在 4.4 版更改: 特殊变量 __file__ 在配置文件中可用,指定配置文件本身的绝对路径。

print_help(file=None)[源代码]

将所有命令行选项打印到stderr(或另一个文件)。