开发者社区> 技术小胖子> 正文

在python中实现自定义配置文件解析及应用技巧[yaml and ConfigParser]

简介:
+关注继续查看

给大家介绍下两个库哈ConfigParser和yaml ,这俩主要是实现配置文件解析的。


前沿:

这段时间同事做项目,我发现有一些个全局配置或者平台的主配置文件,都是写在一个模块里面的。 这也太不专业和太专业了。。。 不专业在与,python有很多这样的配置文件解析的模块。 太专业在于,每次改全局配置都要在xxx.py修改。。。给人的感觉不爽。。。


我一般是咋用的:

脚本的配置变量的解析修改 ! 说的通俗点,我跑一个脚本,不用在脚本的后面加上一堆的参数,可以直接在配置文件里修改线程数目, 绑定的ip地址这些个常量。。。 我有的时候,需要两个独立进程的变量交互,也可以用yaml,当然这个方法有点搓,但也是一种好实现的方法。。。。



先说yaml~

现在好多的配置文件也都在用这个,比如牛逼的saltsatck 集群配置用的就是yaml !!!


YAML是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互。YAML类似于XML,但是语法比XML简单得多,对于转化成数组或可以hash的数据时是很简单有效的。


YAML 简述

  • YAML的可读性好。

  • YAML和脚本语言的交互性好。

  • YAML使用实现语言的数据类型。

  • YAML有一个一致的信息模型。

  • YAML易于实现。

  • YAML可以基于流来处理;

  • YAML表达能力强,扩展性好。

  • YAML语法简单 Structure通过空格来展示,Sequence里的项用"-"来代表,Map里的键值对用":"分隔。

  • 目前现有的语言实现广泛:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript。除了Java,其他都是脚本语言


介绍完yaml~ 咱们开始搞起

第一步安装

094327366.png

yaml的配置文件 ~


1
2
3
4
5
6
7
8
9
10
11
12
name: xiaorui
age: 18
spouse:
    name: mm
    age: 25
sb:
 - name: shencan
   age: 11
 - name1: dehua
   age1: 12
 - name2: qiaofeng
   age1: 13


关于yaml的执行文件 ~

open是打开一个配置文件,load是加载这个配置文件

1
2
3
4
5
#coding:utf-8
import yaml
= open('kk.yaml')
= yaml.load(f)
print x

094444553.png


我们再继续的拆分,其实大家都懂的。。。

095219917.png


配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser !!!


咱们常见的ini配置文件就可以用 configparser !!!

安装 configparser 模块

103345149.png

configparser的配置文件

103357451.png


python.py ~


1.基本的读取配置文件
-read(filename) 直接读取ini文件内容
-sections() 得到所有的section,并以列表的形式返回
-options(section) 得到该section的所有option
-items(section) 得到该section的所有键值对
-get(section,option) 得到section中option的值,返回为string类型
-getint(section,option) 得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。


2.基本的写入配置文件
-add_section(section) 添加一个新的section
-set( section, option, value) 对section中的option进行设置,需要调用write将内容写入配置文件。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#coding:utf-8
import ConfigParser
cf = ConfigParser.ConfigParser()
#read config
cf.read("test.conf")
return all section
secs = cf.sections()
print 'sections:', secs
opts = cf.options("db")
print 'options:', opts
kvs = cf.items("gg")
print 'sec_a:', kvs
#read by type
str_val = cf.get("db""db_host")
print "value for sec_a's a_key1:", str_val
#write config
#update value
#我这里要更新的
cf.set("db""db_host""10.10.10.1")
#我这里新增加的一条
#set new value
cf.set("db""weburl""xiaorui.cc")
#create a new section
#我这里新加的一个段落
cf.add_section('new-duanluo')
cf.set('a_new_section''new_key''new_value')
#write back to configure file
cf.write(open("test.conf""w"))



103908462.png


要是觉得复杂,可以看看这个小例子:

conf文件

1
2
3
4
5
6
7
8
[DB]
host=127.0.0.1
name=mydb
user=root
pwd=testpwd
[TH]
thread=5
timeout=30

python文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#coding=utf-8
import ConfigParser
cf = ConfigParser.ConfigParser()
cf.read('conf.ini') #另个方法是cf.readfp(fp) fp是已打开的文件对象
# 列出所有sections
sec = cf.sections()
print sec
#列出[TB]下的options
pos = cf.options("TH")
print pos
#直接读取配置值
print cf.get("DB","host")  #不要与字典的get()混淆哦
print cf.get("DB","name")
print cf.get("DB","user")
print cf.get("DB","pwd")
print cf.getint("TH","thread") #getint()返回的是整型
print cf.getint("TH","timeout")




看到结果了吧。。。 改变了值和新增了一个段落 !




 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1314362,如需转载请自行联系原作者



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python之configparser模块详解和使用
Python之configparser模块详解和使用
17 0
python configParser配置文件模块
python configParser配置文件模块
28 0
YAML 管理 Kubernetes 应用
YAML 管理 Kubernetes 应用
101 0
如何不编写 YAML 管理 Kubernetes 应用?
Kubernetes 将自身边界内的事物都抽象为资源。其中的主要部分,是以 Deployment、StatefulSet 为代表的 workload 工作负载控制器,其他各类资源都围绕这些主要的资源工作。这些资源合并起来,可以为 IT 技术工作者展现出一个以 workload 为中心的模型。Kubernetes 中所有的资源,都通过声明式配置文件来编辑描述,一条条的 Yaml 字段定义,给了 IT 技术人员最大的自由度的同时,也对技术人员的能力提出了极高的要求。
73 0
Python编程:configparser读写ini配置文件
Python编程:configparser读写ini配置文件
35 0
configparser 配置文件不再难 | Python 主题月
configparser 配置文件不再难 | Python 主题月
74 0
Python----configparser模块的用法
Python----configparser模块的用法
106 0
python接口自动化测试 - configparser配置文件解析器详细使用
python接口自动化测试 - configparser配置文件解析器详细使用
60 0
Python参数配置库ConfigParser详解
参数配置是项目开发过程中必不可少的环节,好的参数配置能够提升代码的易读性、开发效率、减少维护成本。其中,常见的就是自己实现一个Python函数去解析一个配置文件,本文将会介绍一个Python自带的配置文件解析工具包,让参数配置变的更加简单易懂。
387 0
【Docker】Kubernetes集群 yaml部署应用样例
非常简单的yaml配置~,对配置参数标注了说明
1428 0
+关注
技术小胖子
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
给运维工程师的Python实战课
立即下载
Python 脚本速查手册
立即下载
ACE 区域技术发展峰会:Flink Python Table API入门及实践
立即下载