# 使用配置文件 # why :给程序提供一些默认的或个性化的全局参数 # what: 分块kv存储,默认形式有 ini,conf, cfg # how : configparse, http://devdocs.io/python~3.6/library/configparser #[DEFAULT] # section 章节 特殊的章节
import configparser base_dir = r‘D:\python全站‘ config = configparser.ConfigParser() config[‘DEFAULT‘] = {‘base_dir‘:‘D:\python全站‘} config_path = os.path.join(base_dir, ‘common.ini‘) with open(config_path, ‘w‘) as f: config.write(f)
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-2-9e2c1545cc34> in <module>() 3 config = configparser.ConfigParser() 4 config[‘DEFAULT‘] = {‘base_dir‘:‘D:\python全站‘} ----> 5 config_path = os.path.join(base_dir, ‘common.ini‘) 6 with open(config_path, ‘w‘) as f: 7 config.write(f) NameError: name ‘os‘ is not defined
import configparser import os config = configparser.ConfigParser() config[‘DEFAULT‘] = {‘base_dir‘:‘D:\python全站‘} config[‘DEFAULT‘][‘db_type‘] = ‘db‘ config[‘DEFAULT‘][‘db_path‘] = ‘${base_dir}/data.db‘ config[‘DEFAULT‘][‘max_items‘] = ‘1000‘ config[‘DEFAULT‘][‘auto_save‘] = ‘True‘ config[‘coop‘] = {} config[‘coop‘][‘db_type‘] = ‘db‘ config[‘coop‘][‘db_path‘] = ‘${base_dir}/data.db‘ config_path = os.path.join(base_dir, ‘common.ini‘) with open(config_path, ‘w‘) as f: config.write(f) # 将f写入到config中?!
config.sections() # 只显示 coop 方法sections() DEFAULT的特殊地方,类似于类的继承,现在coop继承了DEFAULT的属性
[‘coop‘]
config[‘coop‘][‘db_type‘] # 如上面所言
‘db‘
config[‘coop‘][‘auto_save‘] # 配置文件里面都是字符串
‘True‘
bool(config[‘coop‘][‘auto_save‘]) # 转换
True
for key in config[‘coop‘]: # 继承 printt的是字典的key,而不是里面的子集:字典 print(key)
db_type db_path base_dir max_items auto_save
coop = config[‘coop‘] # sections
coop.getboolean(‘auto_save‘) # 获取真的bool值
True
coop.getint(‘max_items‘) # 获取的是整数getint()
1000
coop?
coop.get(‘db_path‘) #字典的方法dic.get()
‘${base_dir}/data.db‘
config.read(config_path) #config的方法config.read() 读取的是文件
[‘D:\\python全站\\common.ini‘]
config.read? #Signature: config.read(filenames, encoding=None) Docstring: Read and parse a filename or a list of filenames. Files that cannot be opened are silently ignored; this is designed so that you can specify a list of potential configuration file locations (e.g. current directory, user‘s home directory, systemwide directory), and all existing configuration files in the list will be read. A single filename may also be given.
config.add_section(‘fang‘) # 向config中增加section:config.add_section()
config.set(‘fang‘, ‘db_name‘, ‘ccoop.pkl‘) #设置‘fang’的子集
with open(config_path, ‘w‘) as f: config.write(f)
config = configparser.ConfigParser(interpolation=configparser.ExtendedInterpolation()) config.read(config_path) # 获取的是完整的路径
[‘D:\\python全站\\common.ini‘]
config[‘coop‘][‘db_path‘] ######\全路径
‘D:\\python全站/data.db‘
# 面向对象三步走 # 1 规划函数 def write_config(): pass def config_read(): pass def config_check(): pass def add_config(): pass
# 面向对象三步走 # 1 规划函数 import os import pickle import configparser base_dir = r‘D:\python全站‘ config_path = os.path.join(base_dir, ‘demo.ini‘) data = { ‘DEFAULT‘:{ ‘base_dir‘:‘D:\python全站‘, ‘db_type‘:‘db‘, ‘db_path‘:‘${base_dir}/data.db‘, ‘max_items‘:‘1000‘, ‘auto_save‘:‘True‘ }, ‘coop‘:{ ‘db_type‘:‘db‘,‘db_path‘:‘${base_dir}/data.db‘ } } def write_config(data:dict): #必须是dict,四个字母 config = configparser.ConfigParser() for k, v in data.items(): config[k] = v config_path = os.path.join(base_dir, ‘demo.ini‘) with open(config_path, ‘wb‘) as f: config.write(f) def config_read(): pass def config_check(): pass def add_config(): pass
原文:http://blog.51cto.com/13118411/2142615