#
# 最近出了一趟差,是从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

 #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()

python开发_configparser_解析.ini配置文件工具_完整版_博主推荐的更多相关文章

  1. python开发_xml.dom_解析XML文档_完整版_博主推荐

    在阅读之前,你需要了解一些xml.dom的一些理论知识,在这里你可以对xml.dom有一定的了解,如果你阅读完之后. 下面是我做的demo 运行效果: 解析的XML文件位置:c:\\test\\hon ...

  2. python开发_csv(Comma Separated Values)_逗号分隔值_常用导入导出格式_完整版_博主推荐

    ## 最近出了一趟差,是从20号去的,今天回来...# 就把最近学习的python内容给大家分享一下...#''' 在python中,CSV(Comma Separated Values),从字面上面 ...

  3. python开发_gzip_压缩|解压缩gz文件_完整版_博主推荐

    ''' gzip -- 支持gzip文件 源文件:Lib/gzip.py 这个模块提供了一些简单的接口来对文件进行压缩和解压缩,类似于GNU项目的gzip和gunzip. 数据的压缩源于zlib模块的 ...

  4. python开发_tkinter_菜单选项中英文切换_菜单选项不可用操作_博主推荐

    我使用的python版本为:3.3.2 如果你对python中tkinter模块的菜单操作不是很了解,你可以看看: python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推 ...

  5. python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐(二)

    在上一篇blog:python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐 中介绍了python中的tkinter的一些东西,你可能对tkinter有一定的了解了.这篇b ...

  6. 大数据搭建各个子项目时配置文件技巧(适合CentOS和Ubuntu系统)(博主推荐)

    不多说,直接上干货! 很多同行,也许都知道,对于我们大数据搭建而言,目前主流,分为Apache 和 Cloudera 和 Ambari. 后两者我不多说,是公司必备和大多数高校科研环境所必须的! 分别 ...

  7. Ubuntu14.04下Mongodb数据库可视化工具安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐) Ubuntu14.04下Mongodb官网安装部署步骤(图 ...

  8. 精通Android4.0开发视频【张泽华】-完整版下载

    观看须知: 本视频教程为黑马程序员 张泽华老师历经2年时间整理 适合有JavaWeb基础同学学习,教程采用的AVI方式发布,所以看起来很流畅. 视频概括: 1. 本套视频不同于市面上任何一套andro ...

  9. python读取uti-8格式ini配置文件出现UnicodeDecodeError: 'gbk' codec can't decode byte 0xba in position 367: illegal multibyte sequence错误解决方法

    出现这种错误只需要在read下添加encoding='utf-8' 如: from configparser import ConfigParser cf = ConfigParser() cf.re ...

随机推荐

  1. python(32):多进程(2) multiprocessing

    python 多线程:多线程 由于Python设计的限制(我说的是咱们常用的CPython).最多只能用满1个CPU核心. Python提供了非常好用的多进程包multiprocessing,你只需要 ...

  2. JAVA_OPTS讲解【转】

    JAVA_OPTS ,顾名思义,是用来设置JVM相关运行参数的变量. JAVA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:Ma ...

  3. JDK 6和JDK 7的intern方法之不同

    首先介绍下intern方法: 如果常量池中存在当前字符串, 就会直接返回当前字符串. 如果常量池中没有此字符串, 会将此字符串放入常量池中后, 再返回. 1 2 在<深入理解Java虚拟机> ...

  4. Linux下获取和设置IP

    在Linux下获取关于IP和网关的操作:重点是对struct ifreq 的操作. 那么进入目录/usr/include/net/if.h下看查找struct ifreq结构体. /* Interfa ...

  5. Ubuntu下使用Nginx+uWSGI+Flask(初体验)

    Ubuntu 18.04,Nginx 1.14.0, uWSGI 2.0.17.1,Flask, 前言 Windows不支持uWSGI!为了上线自己的项目,只能选择Linux. 自己前面开发了一个Fl ...

  6. js 去除字符串所有空格

    function trim(str){ return str.replace(/\s|\xA0/g,""); }

  7. 数据库-mysql数据连接

    一:Mysql 连接的使用 在前几章节中,我们已经学会了如果在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据. 本章节我们将向大家介绍如何使用 MySQL 的 JO ...

  8. 洛谷P1038神经网络

    传送门啦 一个拓扑排序的题,感觉题目好难懂... #include <iostream> #include <cstdio> #include <cstring> ...

  9. Java第三阶段学习(四、缓冲流)

    一.缓冲流: Java中提供了一套缓冲流,它的存在,可提高IO流的读写速度 缓冲流,根据流的分类分为:字节缓冲流与字符缓冲流. 二.字节缓冲流: 字节缓冲流根据流的方向,共有2个: 1.写入数据到流中 ...

  10. Singleton 多线程

    单例模式 何为单例模式,在GOF的<设计模式:可复用面向对象软件的基础>中是这样说的:保证一个类只有一个实例,并提供一个访问它的全局访问点.首先,需要保证一个类只有一个实例:在类中,要构造 ...