网站首页 > 技术文章 正文
前言:目前我们使用的绝大多数计算机程序都是通过菜单界面系统配置的,它几乎成了我们使用机器的默认方式。无论是办公软件,浏览器,甚至游戏、视频都是,几乎成了我们使用机器的默认方式。而在python中,也有这样的一个配置模块可以把代码可配置化。
什么是配置文件
这里的配置文件不同于我们平常所见的可视化的菜单界面,它是像代码形式的,如下示例:
? :question:为什么要做配置文件?
? :heavy_check_mark:让代码和配置都变成可模块化可配置化,提高代码的重用性,那什么时候把它变成可配置化呢?多处地方都用到一个参数时,经常会变化的参数等,都可以可配置化,我们只需要在配置文件中进行修改即可,不需要在代码中一处处的重复修改。
? Python提供了一个ConfigParser模块,它实现了一种基本的配置文件解析器语言,该语言提供的结构类似于 .ini 文件中的结构。常见的配置文件格式有 .ini .conf .cfg ,配置文件由两个文件对象组成:section和option,一个配置文件里可以包含一个或多个节(section),每个节可以有多个option(键=值),如上图所标示。
读取配置文件
? 它与file文件一样,需要先打开才能进行读取操作,常用方法如下:
read(filename)
sections()
options(section)
items(section)
get(section,option)
getint(section,option)
? 以上图中的 conf.ini 为例进行读取操作:
from configparser import ConfigParser
# 创建一个操作配置文件的对象(文件解析对象)
conf = ConfigParser()
# 读取配置文件
conf.read("conf.ini", encoding="utf8")
# 获取所有section
res2 = conf.sections()
print("这是res2:{}\n".format(res2))
# 获取对应section下的option
res3 = conf.options("logging")
print("这是res3:{}\n".format(res3))
# 获取对应section下的所有键值对
res4 = conf.items("logging")
print("这是res4:{}\n".format(res4))
# get方法:读取出来的内容,都是字符串
res5 = conf.get("logging", "level")
print("这是res5:{}".format(res5), type(res5))
# getint方法:读取出来的内容,都是int类型
res6 = conf.getint("mysql", "port")
print("\n这是res6:{}".format(res6), type(res6))
? 运行结果:
C:\software\python\python.exe D:/learn/test.py
这是res2:['logging', 'mysql']
这是res3:['level', 'f_level', 's_level']
这是res4:[('level', 'DEBUG'), ('f_level', 'DEBUG'), ('s_level', 'ERROR')]
这是res5:DEBUG <class 'str'>
这是res6:3306 <class 'int'>
Process finished with exit code 0
? 除了可以读取str、int类型以外,还支持float、boolean,这里就不再举例。
? :balloon: 小知识:
- 键值对可用 = 也可用 : 进行分隔
- section 名称是区分大小写的,而option不区分
- 键值对中,首尾若有空白符会被去掉
- 配置文件中也可以写入注释,注释以 # 或者 ; 为前缀
写入配置文件
? 基本的写入方法如下:
add_section(section)
set( section, option, value)
from configparser import ConfigParser
# 创建一个操作配置文件的对象(文件解析对象)
conf = ConfigParser()
conf.add_section('test')
conf.set('test', 'name', 'Amy')
conf.write(open('conf.ini', "a", encoding="utf-8"))
? 运行后查看 conf.ini 文件里面的内容:
ConfigParser的封装
? 一次封装,一劳永逸,之后直接调用即可,封装内容按需。
from configparser import ConfigParser
class MyConf:
def __init__(self, filename, encoding="utf8"):
self.filename = filename
self.encoding = encoding
self.conf = ConfigParser()
self.conf.read(filename, encoding)
def get_str(self, section, option):
return self.conf.get(section, option)
def get_int(self, section, option):
return self.conf.getint(section, option)
def get_float(self, section, option):
return self.conf.getfloat(section, option)
def get_bool(self, section, option):
def write_data(self, section, option, value):
self.conf.set(section, option, value)
self.conf.write(open(self.filename, "a", encoding=self.encoding))
if __name__ == '__main__':
print(conf.get_str("conf.ini", "test","name")) # 测试
大家平时学习Python的时候肯定会遇到很多问题,小编我为大家准备了Python学习资料,将这些免费分享给大家!如果想要的可以找我领取
领取方式:
如果想获取这些学习资料,先关注我然后私信小编“01”即可免费领取!(私信方法:点击我头像进我主页右上面有个私信按钮)
如果这篇文章对你有帮助,请记得给我来个评论+转发
猜你喜欢
- 2024-12-10 C++ Config.ini读取,使用inih库读取ini文件
- 2024-12-10 报错:java.lang.ClassNotFoundException:xxx
- 2024-12-10 Creo导出CAD配色文件
- 2024-12-10 Linux如何使用overlayfs堆叠多个目录?Overlayfs文件系统
- 2024-12-10 Win10又爆出蓝屏死机大Bug!教你如何修复它
- 2024-12-10 艾尔登法环玩不了怎么办 老头环打不开玩不了解决办法
- 2024-12-10 Python配置文件解析configparser
- 2024-12-10 如何解决库文件缺失问题?
- 2024-12-10 CentOS7开机自启动脚本(两种实现方式)
- 2024-12-10 python自动化测试框架之如何编写配置文件?使用ConfigParser试试
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)