Python标准库系列之configparser模块
This module provides the ConfigParser class which implements a basic configuration language which provides a structure similar to what’s found in Microsoft Windows INI files. You can use this to write Python programs which can be customized by end users easily.
configparser用于处理特定格式的文件,其本质上是利用open来操作文件。
配置文件格式如下:
1
2
3
4
5
6
|
# 第一种注释方式 ; 第二种注释方式 [node1] # 节点
k1 = v1 # key = value
k2 : v2 # key : value
|
实例
创建一个file.conf
文件,内容为空,然后进入python
IDE:
1
2
3
4
5
6
|
[root@ansheng ~] # touch file.conf
[root@ansheng ~] # python
Python 2.6 . 6 (r266: 84292 , Jul 23 2016 , 15 : 22 : 56 )
[GCC 4.4 . 7 20120313 (Red Hat 4.4 . 7 - 11 )] on linux2
Type "help" , "copyright" , "credits" or "license" for more information.
>>> |
为文件添加节点
1
2
3
4
5
6
7
8
|
>>> import configparser
>>> config = configparser.ConfigParser()
>>> config.read( 'file.conf' , encoding = 'utf-8' )
[ 'file.conf' ]
# 添加节点"node1","node2",然后写入文件 >>> config.add_section( "node1" )
>>> config.add_section( "node2" )
>>> config.write( open ( 'file.conf' , 'w' ))
|
检查节点是否存在
1
2
3
4
5
6
7
|
# 如果文件存在则返回"True",否则就返回"False" >>> print (config.has_section( 'node1' ))
True >>> print (config.has_section( 'node2' ))
True >>> print (config.has_section( 'node3' ))
False |
删除节点
1
2
3
4
5
6
|
# 如果删除的节点存在则返回"True",否则返回"False" >>> config.remove_section( "node2" )
True >>> config.write( open ( 'file.conf' , 'w' ))
>>> print (config.has_section( 'node2' ))
False |
设置节点内的键值对
1
2
3
4
5
6
|
# 添加完键值对之后别忘记了写入到文件中 >>> config. set ( 'node1' , 'Name' , "ansheng" )
>>> config. set ( 'node1' , 'Blog_URL' , "https://blog.ansheng.me" )
>>> config. set ( 'node1' , 'Hostname' , "localhost.localhost" )
>>> config. set ( 'node1' , 'IP' , "127.0.0.1" )
>>> config.write( open ( 'file.conf' , 'w' ))
|
检查节点内的key是否存在
1
2
3
4
5
6
7
|
# 如果节点的Key存在就返回"True",否则返回"False" >>> print (config.has_option( 'node1' , 'Name' ))
True >>> print (config.has_option( 'node1' , 'IP' ))
True >>> print (config.has_option( 'node1' , 'VV' ))
False |
删除节点内的key
1
2
3
4
5
6
|
# 如果删除的节点存在就返回"True",否则就返回"False" >>> config.remove_option( 'node1' , 'IP' )
True >>> config.write( open ( 'file.conf' , 'w' ))
>>> print (config.has_option( 'node1' , 'IP' ))
False |
获取指定节点下指定key的值
1
2
3
4
5
6
7
8
9
|
# 默认返回的是字符串类型 >>> config.get( 'node1' , 'Name' )
'ansheng' >>> config.get( 'node1' , 'Blog_URL' )
'https://blog.ansheng.me' # 返回的字符串我们可以设置成一下三种数据类型,分别是"int","float","bool" # v = config.getint('node1', 'k1') # v = config.getfloat('node1', 'k1') # v = config.getboolean('node1', 'k1') |
获取指定节点下所有的key
1
2
3
|
# 返回节点下面所有的Key列表 >>> config.options( 'node1' )
[ 'name' , 'blog_url' , 'hostname' ]
|
获取指定节点下所有的键值对
# 返回一个列表,列表中每个元组就是一个键值对 >>> config.items('node1') [('name', 'ansheng'), ('blog_url', 'https://blog.ansheng.me'), ('hostname', 'localhost.localhost')]
获取所有节点
1
2
3
|
# 获取当前文件中有多少个节点 >>> config.sections() [ 'node1' ]
|
本文转自 Edenwy 51CTO博客,原文链接:http://blog.51cto.com/edeny/1925757,如需转载请自行联系原作者