python自定义配置文件读取_在python中实现自定义配置文件解析及应用技巧[yaml and ConfigPa...

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

在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~ 咱们开始搞起

第一步安装

yaml的配置文件 ~

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是加载这个配置文件

#coding:utf-8

import yaml

f = open('kk.yaml')

x = yaml.load(f)

print x

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

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

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

安装 configparser 模块

configparser的配置文件

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将内容写入配置文件。

#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 a 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"))

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

conf文件[DB]

host=127.0.0.1

name=mydb

user=root

pwd=testpwd

[TH]

thread=5

timeout=30

python文件#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")

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

转载于:https://blog.51cto.com/rfyiamcool/1314362

在python中实现自定义配置文件解析及应用技巧[yaml and ConfigPa相关教程

redis数据库事务处理及hash,list,set类型的python开发应用

redis数据库事务处理及hash,list,set类型的python开发应用 随着这段时间做项目,又拾起来redis这个nosql利器。。。 以前redis用的最多方面是string的kv存储,队列和mq通信。这段时间重新系统的学习了redis。 关于redis hash哈希的解释:(很官方) redis hash

使用python构建基于hadoop的mapreduce日志分析平台

使用python构建基于hadoop的mapreduce日志分析平台 流量比较大的日志要是直接写入Hadoop对Namenode负载过大,所以入库前合并,可以把各个节点的日志凑并成一个文件写入HDFS。 根据情况定期合成,写入到hdfs里面。 咱们看看日志的大小,200G的dns日志文件,我

利用pypy提高python脚本的执行速度及测试性能

利用pypy提高python脚本的执行速度及测试性能 啥是pypy 简单地说, PyPy 是用 Python 语言写了一个工具, 将 Python 代码成 C, .NET, Java 等语言和平台的代码. PHP 也有类似的项目 – HipHop-PHP, 把 PHP 代码转成 C++ 代码. 为什么要将一种语言转成另一种语

基于gevent和pymysql实现mysql读写的异步非堵塞方案

基于gevent和pymysql实现mysql读写的异步非堵塞方案 咱们经常使用的mysql库, MySQL-Python 库是用C写的,很遗憾它是阻塞的,要实现异步的MySQL驱动必须用 Python 版本的MySQL驱动! 现在社区里面有两个纯python实现的mysql驱动。一个是 myconnpy 另一个是Py

服务端socket开发之多线程和gevent框架并发测试[python语言]

服务端socket开发之多线程和gevent框架并发测试[python语言] 请多关注下我的个人博客,blog.xiaorui.cc 测试下多线程和gevent在socket服务端的小包表现能力,测试的方法不太严谨, 有点属于 自娱自乐 ,要是有问题之处,请大家喷之 ! 每个连接都特意堵塞了0

通过memcached实现领号排队功能及python队列实例

通过memcached实现领号排队功能及python队列实例 前言: 前段时间写的那个域用户平台,要做大量的新功能运维测试,据说要抄IT组,让那帮人到搞,跑一下 ! 尼玛,这可吓坏了我了。 因为平台要和windows做大量的交互,那边 powershell 又很不给力,改成多线程

配置gitlab环境实现代码管理及Web Hook测试和ldap认证

配置gitlab环境实现代码管理及Web Hook测试和ldap认证 前沿: 对于代码库感触有点多,用过redmine(差点忘了名字),还有就是gitweb,最后就是gitlab 。 gitlab是我用的很舒服的东西,在2012就接触了,当时开发水平见不得人,主要上传的还是常用安装配置脚本

基于python的REST框架eve测试与mongodb的数据操作

基于python的REST框架eve测试与mongodb的数据操作 Eve是一款Python的REST API框架,用于构建和部署高可定制的、全功能的RESTful的Web服务。Eve是一个开源项目,遵循BSD开源协议,已在Python 2.6、2.7以及Python 3.3版本下进行了非常全面的测试。 特色 强调RES

你可能感兴趣的:(python自定义配置文件读取)