当有一个配置文件,里面定义了很多变量和它们的值。例如:
test1 = 1 test2 = 22 test3 = 333
通常情况下,配置文件还需要支持注释行,容错处理(键值前后有可忽略的空格或者tab键等)。用C语言实现的话,复杂的是对变量键值的比较和查找。如果文件内容条目太多,那么在比较和查找方面花费的时间太多。
python语言中有个很有用的数据类型---字典。它能存储任何类型的数据(其实python语言对数据类型不是那么敏感,呵呵),甚至函数也能存储。针对上面的示例配置文件,python脚本能够很轻松搞定:
import os def readConf(path): '''定义字典变量''' dict = {} if not os.path.isfile(path): print('configure file not exist') return False fp = open(path, 'r') try: line = fp.readline() while line: '''过滤行首和行尾的空字符(空格/tab键/换行符)''' line = line.strip(' \t\n') '''空行和#号开头的注释行不做处理''' if line and not line.startswith('#'): '''以=号分割本行,返回列表''' list = line.split('=') '''对列表元素过滤头尾的空字符''' list[0] = list[0].strip(' \t\n') list[1] = list[1].strip(' \t\n') '''以=号前面的字符串为关键字,=号后面的为值存入字典''' dict[list[0]] = list[1] line = fp.readline() finally: fp.close() return dict confDict = readConf('/root/configure')
那么整个配置文件里的内容都在confDict中了,confDict['test1']就可以读取test1的值。是不是很简单?
类似其他的文件也可以很方便的读写,只举个例子,具体实现就不写了。
# users` info ############################ #Form: name sex age mail # ############################ zhangsan man 25 [email protected] lisi man 24 [email protected]