YAML解析器
yachain的Python项目详细描述
对链接属性名的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']
对独立于环境的文件/路径的引用
对文件和路径的引用可以相对和绝对使用。 如果属性以path或file结尾,则路径可以是 在检测到来自虚拟环境的操作时自动添加前缀。 默认情况下,大小写有效,可以重写。
使用前缀可以在不同的 环境。
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
因此,正如预期的那样,logfile和database路径得到了前缀。
在非虚拟环境中运行时,这将为我们提供:
/var/log/app.log var/app.app.txt /var/app/db /var/app/db/db.txt db.txt
所以,正如所料,前缀是“/”。