读取配置文件和自定义配置文件(python实现)

转载 2012年03月25日 20:59:38

用python读取配置文件比较方便,比如下面一个配置文件:


0.ini文件:
---------------文件开始----------------
[global]
ip = 192.168.1.100 ;ip地址
port = 1234
MAC = 0x414243444546;mac
---------------文件结束----------------
要从中读取ip地址我们可以用如下代码:

1 #! /usr/bin/python
2 #-*- coding: utf-8 -*-
3 import ConfigParser
4
5 config = ConfigParser.ConfigParser()
6 config.readfp(open(raw_input("Input file name : "),"rb"))
7
8 print config.get("global","ip")

 

运行结果:
>>> 
Input file name : 0.ini
192.168.1.100

如果把最后一行换成:print config.get("global","MAC")
运行结果:
>>> 
Input file name : 0.ini
0x414243444546;mac


然而读取的数据不是我预期的(主要是ini文件写法有误),再看下面我自己定义的配置文件:

1.ini文件:
---------------文件开始----------------

# 配置文件

<part1> 
[global] #全局配置参数
ip = 192.168.1.100
port = 1234 
MAC = 0x414243444546# MAC地址


<part2> 
[global] #全局配置参数
ip = 192.168.1.101
port = 1234 
MAC = 0x414243444547 # MAC地址

---------------文件结束----------------

对于扩展的配置文件格式,上述代码不能解析。默认的配置有时候局限太大,用起来不太方便。
我们可以借助python的dict数据结构完成配置文件的解析,使用起来也很方便。
下面是个示例,可以读取上述扩展的配置文件。


读取代码示例:

 1 #! /usr/bin/python
2 #-*- coding: utf-8 -*-
3
4 partLable = ("<",">")
5 sectionLable = ("[","]")
6 endlineLable = "\r\n" # windows下的行标志
7 #endlineLable = "\n" # linux下的行标志
8 equalLable = "=" # 赋值标志
9 noteLable = '#' # 注释标志
10
11 # 得到总配置的map
12 def getPlatformMap(strtmp,lable1 = partLable,lable2 = sectionLable):
13 tmp = strtmp.split(lable1[0])
14 tmp = [elem for elem in tmp if len(elem) > 1]
15 tmp = [elem for elem in tmp if elem.rfind(lable1[1]) > 0]
16 platdict = {}
17 for elem in tmp:
18 key = elem[0:elem.find(lable1[1]):]
19 value = elem[elem.find(lable2[0])::]
20 platdict[key] = value
21 return platdict
22
23 # 得到各部分的map
24 def getSectionMap(strtmp,lable1 = sectionLable):
25 tmp = strtmp.split(lable1[0])
26 tmp = [elem for elem in tmp if len(elem) > 1]
27 tmp = [elem for elem in tmp if elem.rfind(lable1[1]) > 0]
28 sectionDict = {}
29 for elem in tmp:
30 key = elem[0:elem.find(lable1[1]):]
31 value = elem[elem.find(endlineLable)+len(endlineLable)::]
32 sectionDict[key] = value
33 return sectionDict
34
35 # 获取具体配置值
36 def getValueMap(strtmp):
37 tmp = strtmp.split(endlineLable)
38 tmp = [elem for elem in tmp if len(elem) > 1]
39 valueDict = {}
40 for elem in tmp:
41 if elem.find(noteLable) > 0: # 如果有注释则去掉注释
42 elem = elem[0:elem.find(noteLable):]
43 elem = ''.join(elem.split()) # 去掉空白字符
44 key = elem[0:elem.find(equalLable):]
45 value = elem[elem.find(equalLable)+len(equalLable)::]
46 valueDict[key] = value
47 return valueDict
48
49 f = open(raw_input("Input file name : "),"rb")
50 strFileContent = f.read()
51 f.close()
52 vardict = {}
53
54 var1 = getPlatformMap(strFileContent)
55
56 for k,v in var1.items():
57 var2 = getSectionMap(v)
58 dict3 = {}
59 for k2,v2 in var2.items():
60 var3 = getValueMap(v2)
61 dict3[k2] = var3
62 vardict[k] = dict3
63
64 print vardict["part2"]["global"]["ip"]

这里只提供一种思路,并验证其可行性,具体实施可以借助C++等其它语言改写以满足需求。

Python读取配置文件

一、argparse argparse,是Python标准库中推荐使用的编写命令行程序的工具。也可以用于读取配置文件。 1.conf配置文件: { "game0": { "ip":"127...
  • majianfei1023
  • majianfei1023
  • 2015年11月20日 23:58
  • 4927

python读conf配置文件--ConfigParser

python读写配置文件还是比较方便得。   1) 基本的读取配置文件      -read(filename) 直接读取ini文件内容      -sections() 得到所有的secti...
  • xiaofei0859
  • xiaofei0859
  • 2016年05月03日 15:35
  • 3657

Python中配置文件的使用

因为项目的需要,要用到Python加载配置文件。本文主要参考了http://www.cnblogs.com/victorwu/p/5762931.html配置文件的读取示例a) 配置文件中包含一个或多...
  • mrbcy
  • mrbcy
  • 2017年03月03日 17:10
  • 1830

python配置文件操作

python 读写配置文件 ConfigParser模块是python自带的读取配置文件的模块,借助它可以方便的读取配置文件。配置文件,顾名思议就是存放配置的文件。 ...
  • a6225301
  • a6225301
  • 2015年03月08日 14:37
  • 1264

Python中logging.config配置文件解读

Python中logging.config配置文件解读 下面的函数用于配置logging模块,它们位于logging.config模块中。你可以使用这些函数来配置,也可以在logging或是...
  • tao_627
  • tao_627
  • 2015年07月03日 18:06
  • 6706

python读取和自定义配置文件的教程

python读取和自定义配置文件的方法。 python读取配置文件很方便。 例如下面的配置文件: 0.ini文件: ----文件开始---- [global] ip = 192.168...
  • vip_linux
  • vip_linux
  • 2013年05月12日 22:25
  • 1056

python学习——编写配置文件

有了Web框架和ORM框架,我们就可以开始装配App了。 通常,一个Web App在运行时都需要读取配置文件,比如数据库的用户名、口令等,在不同的环境中运行时,Web App可以通过读取不同的配置文...
  • youzhouliu
  • youzhouliu
  • 2016年08月08日 12:44
  • 2804

python配置文件(ini文件)

为了便于参数调试,需要将程序中的参数与程序分离开,于是存储参数, 传参以及解析参数困惑了好久,java可以使用properties文件,那么python用什么呢(python新手),搜寻良久,终于在网...
  • u014221266
  • u014221266
  • 2017年03月20日 16:08
  • 929

Python3 配置文件(configparser)

Python3 配置文件(configparser) configparser 可以读写和解析注释文件, 但是没有写入注释的功能...
  • Rozol
  • Rozol
  • 2017年05月28日 15:32
  • 3883

python读取配置文件

author:skate time:2013/12/11 python读取配置文件   配置文件样例: [root@slave92 python]# more config.ini ...
  • wyzxg
  • wyzxg
  • 2013年12月11日 14:53
  • 10733
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读取配置文件和自定义配置文件(python实现)
举报原因:
原因补充:

(最多只允许输入30个字)