python读取配置文件方式(ini、yaml、xml)
零、前言
python代码中配置文件是必不可少的内容。常见的配置文件格式有很多中:ini、yaml、xml、properties、txt、py等。
一、ini文件
1.1ini文件的格式
;注释内容
[url];section名称
baidu=https://www.nhooo.com
port=80[email]
sender='xxx@qq.com'
注意section的名称不可以重复,注释用分号开头。
1.2读取configparser
python自带的configparser模块可以读取.ini文件,注意:在python2中是ConfigParser
创建文件的时候,只需要在pychrame中创建一个扩展名为.ini的文件即可。
importconfigparser file='config.ini' #创建配置文件对象 con=configparser.ConfigParser() #读取文件 con.read(file,encoding='utf-8') #获取所有section sections=con.sections() #['url','email'] #获取特定section items=con.items('url')#返回结果为元组 #[('baidu','https://www.nhooo.com'),('port','80')]#数字也默认读取为字符串 #可以通过dict方法转换为字典 items=dict(items)
二、yaml配置文件
2.1yaml文件格式
yaml文件是用来方便读写的一种格式。它实质上是一种通用的数据串行话格式。
它的基本语法如下:
大小写敏感
缩进表示层级关系
缩进时不允许使用Tab,仅允许空格
空格的多少不重要,关键是相同层级的元素要对齐
#表示注释,#后面的字符都会被忽略
yaml支持的数据格式包括:
字典
数组
纯量:单个的,不可再次分割的值
2.1.2对象
对象是一组组的键值对,使用冒号表示结构
url:https://www.nhooo.com log: file_name:test.log backup_count:5
yaml也允许另外一种写法,将所有的键值对写成一个行内对象
log:{file_name:test.log,backup_count:5}
2.1.3数组
一组横线开头的行,组成一个数组。
-cat
-Dog
-Goldfish
转换成python对象是
['cat','Dog','Goldfish']
数组也可以采用行内写法:
animal:[cat,dog]
转行成python对象是
{'animal':['cat','dog']}
2.1.4纯量
纯量是最基本,不可分割的值。
数字和字符串直接书写即可:
number:12.30
name:zhangsan
布尔值用true和false表示
isSet:true
flag:false
null用~表示
parent:~
yaml允许用两个感叹号表示强制转换
e:!!str123
f:!!strtrue
2.1.5引用
锚点&和别名*,可以用来引用
defaults:&defaults adapter:postgres host:localhost development: databases:myapp_deveploment <<:*defaults test: databases:myapp_test <<:*defaults
等同于以下代码
defaults: adapter:postgres host:localhost development: databases:myapp_deveploment adapter:postgres host:localhost test: databases:myapp_test adapter:postgres host:localhost
&用来建立锚点(defaults),<<表示合并到当前数据,*用来引用锚点
下面是另外一个例子:
-&abcst
-cat
-dog
-*abc
转换成python代码是:
['st','cat','dog','st']
2.2yaml文件的读取
读取yaml文件需要先安装相应模块。
pipinstallyaml
yaml文件内容如下:
url:https://www.baidu.com email: send:xxx@qq.com port:25 --- url:http://www.sina.com.cn
读取代码如下:
#coding:utf-8 importyaml #获取yaml文件路径 yamlPath='config.yaml' withopen(yamlPath,'rb')asf: #yaml文件通过---分节,多个节组合成一个列表 date=yaml.safe_load_all(f) #salf_load_all方法得到的是一个迭代器,需要使用list()方法转换为列表 print(list(date))
三、xml配置文件读取
xml文件内容如下:
War,Thriller DVD 2003 PG 10 TalkaboutaUS-Japanwar Anime,ScienceFiction DVD 1989 R 8 Aschientificfiction Anime,Action DVD 4 PG 10 VashtheStampede! Comedy VHS PG 2 Viewableboredom
读取代码如下:
#coding=utf-8 importxml.dom.minidom fromxml.dom.minidomimportparse DOMTree=parse('config.xml') collection=DOMTree.documentElement ifcollection.hasAttribute("shelf"): print("Rootelement:%s"%collection.getAttribute("shelf")) #在集合中获取所有电影 movies=collection.getElementsByTagName("movie") #打印每部电影的详细信息 formovieinmovies: print("*****Movie*****") ifmovie.hasAttribute("title"): print("Title:%s"%movie.getAttribute("title")) type=movie.getElementsByTagName('type')[0] print("Type:%s"%type.childNodes[0].data) format=movie.getElementsByTagName('format')[0] print("Format:%s"%format.childNodes[0].data) rating=movie.getElementsByTagName('rating')[0] print("Rating:%s"%rating.childNodes[0].data) description=movie.getElementsByTagName('description')[0] print("Description:%s"%description.childNodes[0].data)
以上这篇python读取配置文件方式(ini、yaml、xml)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。