另一个简单的配置解析器,用于ini样式的配置文件。

yascp的Python项目详细描述


这是另一个用于ini样式配置文件的简单配置解析器模块。

安装

pip install yascp

easy_install yascp

用法

示例配置如下所示,保存在example.conf:

[database]
login = user
password = topsecret
host = example.com
port = 3306

[backend_api]
login = api_user
password = api_password
url = http://example.com:9080

在脚本中

构造函数只接受两个参数-第一个参数是配置文件的名称或绝对路径(有关详细信息,请参阅下面的“配置文件”)和默认值字典,在读取任何实际配置文件之前,将对其进行分析。如果在配置文件中找到相同的节和选项,则将覆盖默认值。 在0.2.6版之前,键和值只能由“=”符号分隔,但从2.7开始,可以传递第三个参数来指定分隔符,它可以是任何内容。如果未指定,则默认值仍为“=”。

import yascp
config = yascp.parser.Parser(configuration_file_name = 'example.conf', defaults = {'extra.port':'666'}, delimiter = '=')

login      = config.database.username
password   = config.database.password
host       = config.database.host
port       = config.database.port

print config.backend_api.url
print config.extra.port

有一个方便的方法可以打印出所有解析的配置。

所以跑步:

config.print_all()

将打印到以下屏幕:

backend_api.url = http://example.com:9080
backend_api.password = api_password
backend_api.login = api_user
extra.port = 666
database.host = example.com
database.port = 3306
database.login = user
database.password = topsecret

注意所有内容都是字符串。该模块不区分任何类型的数据,因此开发人员应该知道在哪里需要整数,例如执行所有必需的测试/处理可能的错误。

在命令行中

yascp_parser.py [full path to or name of an INI config file] [section.option to be fetched|--print-all]

脚本有两个参数

第一个参数是配置文件的名称或其完整路径(有关详细信息,请参见下面的“配置文件”部分)。

第二个参数可以是“-list all”以获取所有可用选项的列表 或特定选项的键,以仅获取此选项的值(首先运行 “–列出所有”以查看此处到底可以使用什么)。

如果选项不属于配置文件中的任何部分 然后应该是带有“默认”部分的地址,即:

default.[myoption]

示例用法:

python parser.py /tmp/example.conf --print-all
backend_api.url = http://example.com:9080
backend_api.password = api_password
backend_api.login = api_user
database.host = example.com
database.port = 3306
database.login = user
database.password = topsecret

现在知道哪些选项是可用的,但您只能获取所需的选项:

python parser.py /tmp/example.conf backend_api.url
http://example.com:9080

配置文件

如果为配置文件提供了绝对路径,则只读取该文件,但 如果只给出配置文件的名称,则脚本将尝试读取 以该名称命名的文件,其位置和顺序如下:

  1. /etc/[配置文件名]
  2. ~/[配置文件名]
  3. 运行脚本的目录。

注意:如果存在多个配置文件,则保存在/etc/中的配置文件中设置的重复选项将被用户主目录中的选项覆盖,以此类推。

更改日志

0.3.1

  • 增加了python 2&3兼容性

0.3.0

  • 修正了“print_all”方法的问题,如果用户用字符串以外的任何内容覆盖一个值,它将中断
  • 已更正解析器模块中的代码样式问题(太长的行等)数

0.2.9条 ^^^ -如果从命令行调用,配置分析错误现在会被捕获,因此不会打印跟踪 -如果解析器是从外部python代码中初始化的,则'~'现在扩展到用户的home目录 -次要拼写更正

0.2.8条 ^^^ -小的拼写更正、文档更正/更新

0.2.7条 ^^^ -扩展功能-现在,当用作模块时,可以传递分隔符,因此从现在起,键和值可以按=分隔,也可以按空格字符、制表符或其他任何字符分隔

0.2.6条 ^^^ -修复了getattr方法中具有无限递归的“隐藏”问题;虽然这不会影响功能性

0.2.5分 ^^^ -通过脚本yascp_parser.py从shell引入了正确的访问点(安装后可从path获得) -引入可能性通过直接调用执行模块,即python-m yascp

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Android Java在活动之间传递值   java当实体中存在关系时,我可以只使用实体的id而不是从DB中获取实体吗?   bouncycastle Java运行SSHD服务器错误未找到类定义   java SWT/Swing>Threads n'Hell   java多线程数据库读取   java如何在Eclipse中轻松提交Git   java在哪里可以找到字符串相等比较的一组特定排序规则?   无连接表的java单向单域关系   java扩展三角文件   java spring。杰克逊。序列化。failonemptybeans   java无法加载请求的类:oracle。jdbc。驾驶员OracleDriver   java通过数组进行索引循环并打印出元素?   找不到eclipse错误类中的java提交Hadoop作业   Java:随机设定种子   java片段、异步任务和侦听器   java在分号后使用{}