前言:
在日常工作中经常需要读写配置文件,这里将配置文件的读写封装成一个类,供后续使用
关键点代码的介绍:
def lock(func):
def wrapper(self, *args, **kwargs): # self变量,可以调用对象的相关方法
with Lock():
return func(self, *args, **kwargs)
return wrapper
1.使用线程锁:防止并发向配置文件写入数据,保证数据的准确性
2.装饰方法的self参数( def wrapper(self, *args, **kwargs)): self是对象自身,可以用来调用对应的各类成员(虽然这里没用到)
完整代码:
# coding:utf-8
import os
import ConfigParser
from threading import Lock
def lock(func):
def wrapper(self, *args, **kwargs): # self变量,可以调用对象的相关方法
with Lock():
return func(self, *args, **kwargs)
return wrapper
class Config(object):
"""
读写ini配置文件
"""
def __init__(self, path):
self.path = path
if not os.path.exists(self.path):
raise IOError('file {} not found!'.format(self.path))
try:
self.cf = ConfigParser.ConfigParser()
self.cf.read(self.path)
except Exception as e:
raise IOError(str(e))
def get(self, section, key):
"""读取配置文件数据"""
return self.cf.get(section, key)
@lock
def set(self, section, key, value):
"""向配置文件写入数据"""
self.cf.set(section, key, value)
with open(self.path, 'w') as f:
self.cf.write(f)
if __name__ == "__main__":
pass