YAML解析器

yachain的Python项目详细描述


https://travis-ci.org/hootnot/yachain.svg?branch=masterhttps://img.shields.io/pypi/pyversions/yachain.svghttps://coveralls.io/repos/github/hootnot/yachain/badge.svg?branch=master

对链接属性名的yaml访问。

安装

$ pip install yachain

假设我们有:

---# confignetwork:name:developersgitserver:ip:192.168.178.101netmask:255.255.255.0gateway:192.168.178.1packages:-yum-gcc

使用yachain我们可以通过以下方式访问它:

>>>importyachain>>>c=yachain.Config().load("netw.cfg")>>>print(c["network::gitserver::gateway"])192.168.178.1>>>print(c["network::gitserver::packages"])['yum','gcc']

对独立于环境的文件/路径的引用

对文件和路径的引用可以相对和绝对使用。 如果属性以pathfile结尾,则路径可以是 在检测到来自虚拟环境的操作时自动添加前缀。 默认情况下,大小写有效,可以重写。

使用前缀可以在不同的 环境。

importyachainimportyamlimportsysimportos# yaml config:yc="""
---
app:
  logfile: var/log/app.log
  textrules: var/app.app.txt
  database_path: var/app/db
  database_file: /var/app/db/db.txt
  database_name: db.txt
"""PREFIX="/"ifnothasattr(sys,'real_prefix')elsesys.prefix# CONFIG_FILE = os.path.join(PREFIX, "etc/app/app.cfg")config=yachain.Config(prefix=PREFIX,configdata=yaml.load(yc))forAin["logfile","textrules","database_path","database_file","database_name"]:k="app::{}".format(A)printconfig[k]

当从虚拟环境运行时,这将为我们提供:

/home/user/venv/var/log/app.log
var/app.app.txt
/home/user/venv/var/app/db
/var/app/db/db.txt
db.txt

因此,正如预期的那样,logfiledatabase路径得到了前缀。

在非虚拟环境中运行时,这将为我们提供:

/var/log/app.log
var/app.app.txt
/var/app/db
/var/app/db/db.txt
db.txt

所以,正如所料,前缀是“/”。

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

推荐PyPI第三方库


热门话题
windows请帮助获取java。运行程序时发生lang.nullpointerexception   JPA标准中的错误:java。lang.IllegalArgumentException:此JPQLquery中没有名为“:inputMsgId_1_”的参数   java调度一个小程序,从ScheduledExecutorService开始   java点击AVD“创建设备”按钮抛出NullPointerException   缓存Java9WebStart会多次加载jar文件   使用java计算最小二乘   当代理关闭时,java kafka生产者不会抛出异常   我们什么时候以及为什么要在java中进行自定义序列化?   java使用GSON解析包含包含所需字符串的对象的对象数组   java如何使用BOBJ REST API实现分页?   java身份验证失败:用户的凭据已过期。CAS v4。2.   合并排序中的java无限循环?   java jackson xml将pojo子元素转换为字符串   tcp Java ObjectOutputStream重置错误   如何调用。bat文件,并使用java中的ProcessBuilder发送字符串   奇怪的Java数学结果   java如何在Android中禁用最近的活动按钮?   java刷下应用程序崩溃   使用Java收集所有VersionOne资产及其所有属性   Java打印:创建具有最小可接受边距的页面格式