python开发_configparser_解析.ini配置文件工具_完整版_博主推荐

#
# 最近出了一趟差,是从20号去的,今天回来...
# 就把最近学习的python内容给大家分享一下...
#
'''
在python中,configparser模块提供了操作*.ini配置文件的一些操作方法
就如python的API中所描述的一样: 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. 以下实现的功能是:
将一些配置信息写入到指定文件中,并且提供方法获取配置文件中的信息
'''

下面是我做的demo,

运行效果:

Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
SHOW_LOG : True
The path [C:\test] dosen't exist!
Created the path [C:\test]
打开文件:[C:\test\hongten.ini]
开始写入数据:[{'url': 'jdbc:oracle:thin:@', 'ip': '172.0.0.1', 'isJndiDs': 'false', 'user': 'root', 'port': '', 'driverClassName': 'oracle.jdbc.OracleDriver', 'password': '*******', 'name': 'hongten_datasource', 'dbName': 'db_hongten'}]
打开文件:[C:\test\hongten.ini]
开始读取数据:[url] = [jdbc:oracle:thin:@]
开始读取数据:[ip] = [172.0.0.1]
开始读取数据:[isjndids] = [false]
开始读取数据:[user] = [root]
开始读取数据:[port] = [1521]
开始读取数据:[driverclassname] = [oracle.jdbc.OracleDriver]
开始读取数据:[password] = [*******]
开始读取数据:[name] = [hongten_datasource]
开始读取数据:[dbname] = [db_hongten]
url : jdbc:oracle:thin:@,ip : 172.0.0.1,isjndids : false,user : root,port : 1521,driverclassname : oracle.jdbc.OracleDriver,password : *******,name : hongten_datasource,dbname : db_hongten
##################################################
打开文件:[C:\test\hongten.ini]
写入数据:[DATA_SOURCE_INFO]
[url : jdbc:oracle:thin:@,ip : 172.0.0.1,isjndids : false,user : root,port : 1521,driverclassname : oracle.jdbc.OracleDriver,password : *******,name : hongten_datasource,dbname : db_hongten]
写入数据:[PROVINCES]
[zj : Zhejiang,bj : Beijing,gd : Guangdong,sh : Shanghai]
写入数据:[AUTHOR_INFO]
[create : 2013-08-22,blog : http://www.cnblogs.com/hongten,author : hongten,mailto : hongtenzone@foxmail.com,qq : 648719819,version : 1.0]
打开文件:[C:\test\hongten.ini]
获取模块名称:[DATA_SOURCE_INFO]
开始读取数据:[url] = [jdbc:oracle:thin:@]
开始读取数据:[ip] = [172.0.0.1]
开始读取数据:[isjndids] = [false]
开始读取数据:[user] = [root]
开始读取数据:[port] = [1521]
开始读取数据:[driverclassname] = [oracle.jdbc.OracleDriver]
开始读取数据:[password] = [*******]
开始读取数据:[name] = [hongten_datasource]
开始读取数据:[dbname] = [db_hongten]
获取模块名称:[PROVINCES]
开始读取数据:[zj] = [Zhejiang]
开始读取数据:[bj] = [Beijing]
开始读取数据:[gd] = [Guangdong]
开始读取数据:[sh] = [Shanghai]
获取模块名称:[AUTHOR_INFO]
开始读取数据:[create] = [2013-08-22]
开始读取数据:[blog] = [http://www.cnblogs.com/hongten]
开始读取数据:[author] = [hongten]
开始读取数据:[mailto] = [hongtenzone@foxmail.com]
开始读取数据:[qq] = [648719819]
开始读取数据:[version] = [1.0]
{'DATA_SOURCE_INFO': {'driverclassname': 'oracle.jdbc.OracleDriver', 'user': 'root', 'isjndids': 'false', 'name': 'hongten_datasource', 'port': '', 'url': 'jdbc:oracle:thin:@', 'password': '*******', 'ip': '172.0.0.1', 'dbname': 'db_hongten'}, 'PROVINCES': {'bj': 'Beijing', 'zj': 'Zhejiang', 'gd': 'Guangdong', 'sh': 'Shanghai'}, 'AUTHOR_INFO': {'create': '2013-08-22', 'blog': 'http://www.cnblogs.com/hongten', 'author': 'hongten', 'mailto': 'hongtenzone@foxmail.com', 'qq': '', 'version': '1.0'}}
##################################################
打开文件:[C:\test\hongten.ini]
获取到[C:\test\hongten.ini]文件,模块:[DATA_SOURCE_INFO],键:[name],值:[hongten_datasource]
hongten_datasource
>>>

在c:\\test目录下面的情况:

python开发_configparser_解析.ini配置文件工具_完整版_博主推荐

====================================================

代码部分:

====================================================

 #python configparser

 #Author  : Hongten
#Mailto : hongtenzone@foxmail.com
#Blog : http://www.cnblogs.com/hongten
#QQ : 648719819
#Create : 2013-08-22
#Version : 1.0 import os
import configparser '''
在python中,configparser模块提供了操作*.ini配置文件的一些操作方法
就如python的API中所描述的一样: 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. 以下实现的功能是:
将一些配置信息写入到指定文件中,并且提供方法获取配置文件中的信息
''' #global var
SHOW_LOG = True
#Microsoft Windows INI files path
HONGTEN_INT_PATH = '' def mkdirs(path):
'''创建多级目录'''
if os.path.exists(path):
if SHOW_LOG:
print('The path [{}] existing!'.format(path))
else:
if SHOW_LOG:
print('The path [{}] dosen\'t exist!'.format(path))
os.makedirs(path)
if SHOW_LOG:
print('Created the path [{}]'.format(path)) def get_path(absPath):
'''获取到一个绝对路径的目录,
如绝对路径:'C:\\test\\hongten.ini'
则返回的是'C:\\test'
'''
if os.path.exists(absPath):
if SHOW_LOG:
print('the path [{}] existing!'.format(absPath))
return os.path.split(absPath)[0]
else:
return os.path.split(absPath)[0] def get_config():
'''return a configparser object'''
return configparser.ConfigParser() def write_datas_2_config(path, config, datas):
'''向指定的ini配置文件中写入数据
参数:
path -- 指定的ini配置文件路径
config -- configparaser的一个对象
datas -- 配置文件的数据,类型为字典类型
在datas数据中有key,value,对于
每一个value来说都是字典类型,如:
datas = {'a' : {'1', '2'}
'b' : {'c', 'd', 'e'}}
'''
for k, v in datas.items():
config[k] = v
if SHOW_LOG:
print('打开文件:[{}]'.format(path))
with open(path, 'w') as cf:
if SHOW_LOG:
for name in config.sections():
c = ''
for key in config[name]:
c += key + ' : ' + config[name][key] + ','
print('写入数据:[{}]\n[{}]'.format(name, c[0:-1]))
config.write(cf) def write_config(path, config, name, data):
'''向指定的ini配置文件中写入数据
参数:
path -- 指定的ini配置文件路径
config -- configparaser的一个对象
name -- 配置项的root名称
data -- 配置文件的数据,类型为字典类型
如:
data = {'a', 'b', 'c'}
'''
config[name] = data
if SHOW_LOG:
print('打开文件:[{}]'.format(path))
with open(path, 'w') as cf:
if SHOW_LOG:
print('开始写入数据:[{}]'.format(data))
config.write(cf) def read_config(path, config, name):
'''读取配置文件信息'''
if SHOW_LOG:
print('打开文件:[{}]'.format(path))
config.read(path)
sections = config.sections()
if name is not None and name != '' and name in sections:
content = ''
for key in config[name]:
if SHOW_LOG:
print('开始读取数据:[{}] = [{}]'.format(key, config[name][key]))
content += key + ' : ' + config[name][key] +','
return content[0:-1]
else:
print('name is Empty or equals None or not int sections!') def read_form_config(path, config):
'''读取配置文件信息,以字典的形式返回'''
if SHOW_LOG:
print('打开文件:[{}]'.format(path))
config.read(path)
sections = config.sections()
#返回的字典对象
result_dict = {}
for name in sections:
#字典中每一个value都是一个字典对象
temp_dict = {}
if SHOW_LOG:
print('获取模块名称:[{}]'.format(name))
for key in config[name]:
if SHOW_LOG:
print('开始读取数据:[{}] = [{}]'.format(key, config[name][key]))
temp_dict[key] = config[name][key]
result_dict[name] = temp_dict
return result_dict def get_value_from_config(path, config, name, key):
'''
从ini文件中获取某个key所对应的value值
参数:
path -- ini文件路径
config -- configparser对象
name -- ini文件中的模块名称
key -- 对应模块中的key值
'''
if SHOW_LOG:
print('打开文件:[{}]'.format(path))
config.read(path)
sections = config.sections()
if name is not None and name != '' and name in sections:
keys = []
for k in config[name]:
keys.append(k)
if key in keys:
if SHOW_LOG:
print('获取到[{}]文件,模块:[{}],键:[{}],值:[{}]'.format(path, name, key, config[name][key]))
return config[name][key]
else:
print('不存在对应的key...')
else:
print('name is Empty or equals None or not int sections!') def init():
global SHOW_LOG
SHOW_LOG = True
print('SHOW_LOG : {}'.format(SHOW_LOG))
#Microsoft Windows INI files path
global HONGTEN_INT_PATH
HONGTEN_INT_PATH = 'C:\\test\\hongten.ini'
abspath = get_path(HONGTEN_INT_PATH)
mkdirs(abspath) def main():
init()
data = {'name' : 'hongten_datasource',
'driverClassName' : 'oracle.jdbc.OracleDriver',
'isJndiDs' : 'false',
'ip' : '172.0.0.1',
'port' : '',
'dbName' : 'db_hongten',
'user' : 'root',
'password' : '*******',
'url' : 'jdbc:oracle:thin:@'}
prov_data = {'GD' : 'Guangdong',
'SH' : 'Shanghai',
'BJ' : 'Beijing',
'ZJ' : 'Zhejiang'}
author_data = {'author' : 'hongten',
'mailto' : 'hongtenzone@foxmail.com',
'blog' : 'http://www.cnblogs.com/hongten',
'qq' : '',
'create' : '2013-08-22',
'version' : '1.0'}
datas = {'DATA_SOURCE_INFO' : data,
'PROVINCES' : prov_data,
'AUTHOR_INFO' : author_data}
name = 'DATA_SOURCE_INFO'
key = 'name'
config = get_config()
write_config(HONGTEN_INT_PATH, config, name, data)
content = read_config(HONGTEN_INT_PATH, config, name)
print(content)
print('#' * 50)
write_datas_2_config(HONGTEN_INT_PATH, config, datas)
content = read_form_config(HONGTEN_INT_PATH, config)
print(content)
print('#' * 50)
value = get_value_from_config(HONGTEN_INT_PATH, config, name, key)
print(value) if __name__ == '__main__':
main()
上一篇:基于TCP的通信 客户端


下一篇:基于fis的前端模块化和工程化方案