如何在Python程序中使用配置文件.ini(ConfigParser)
·No AI「完全由人类大脑和双手完成,没有任何AI参与」
引言
在Python程序的编写中,我们经常要为程序配置一个配置文件,有了配置文件,可以记录一些应用的参数配置,方便下次使用时直接调用。
那么如何为自己的Python应用制作一个配置文件并方便的使用呢?这篇博文就是用来讨论这个简单的问题的。
本博文仅为作者对配置文件使用的一些见解,错误难免,如有问题请指教。
相关链接: PythonINI配置文件读写的简单方法
本文重点讨论如何在程序中使用配置文件,ConfigParser类的具体使用,请参考上文。
需求
前一阵子做了个口算题的生成的应用,但是每次打开应用时都是加载的程序默认的参数,非常不方便,所以就要考虑为程序添加一个配置文件。 具体需求如下:
- 保存程序设置参数
- 功能使用配置文件的参数
- 组织以上功能封装成为一个类,方便以后功能的扩展。
分析
先上一个配置文件的工作流程图

通过流程图我们可以总结出配置文件类中需要的方法:
- 创建(若ini文件不存在)及加载本地配置文件
- 程序加载配置项参数
- 修改参数的时候保存配置项到ini文件
- 整理配置项参数为程序功能所用。
构建APPconfig类
首先导入必须的包:
import os
from configparser import ConfigParser
然后确定ini配置文件的物理位置,这里可以引用Django配置文件加载的方法。
#ini程序所在目录,也是当前程序的根目录
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
#INI文件地址
INI_PATH = os.path.join(BASE_DIR, 'config.ini')
创建INI文件
若程序是首次启动,可以判断配置文件ini是否存在,若不存在可以创建一个带有默认数据参数的配置文件。
为类添加一个方法def create_ini(self),此方法用来创建配置文件ini。
当在类启动方法中创建了ConfigParser对象后,就可以利用这个对象来编辑修改配置文件了。
加载及保存配置文件
若文件存在,即可直接加载了。
def readINI(self):
""" ini文件读取,返回一个INI配置对象
或是用来更新内存中的配置文件数据
"""
self.c.read(self.INI_PATH, encoding='utf-8')
创建一个方法,用来读取配置文件,因为在程序运行中需要随时加载更新内存中的参数,所以弄个方法存在也是必要的。
有读取了,我们还需要保存参数到配置文件里,在建一个保存的方法:
def saveINI(self):
'''保存或是更新ini文件'''
with open(self.INI_PATH, mode='w', encoding='utf-8') as ini:
self.c.write(ini)
这样,只要修改了参数,结尾就可以调用这个方法来保存配置文件。
修改并保存配置文件参数
为每一个参数指定一个方法,用来修改并保存当前参数到配置文件,当触发需要修改参数的事件是,直接调用当前方法即可修改配置文件里对应的参数了。
范例:
def saveNumber(self,number):
'''保存口算题个数设置数据'''
self.c.set('config','number',number)
self.saveINI()
读取参数
当创建完ConfigParser对象后,就可以使用该对象方便的操作配置文件的读取和保存了,具体方法这里不再敷衍,可以参考PythonINI配置文件读写的简单方法
也可以单独建立一个方法,用来返回一组数据供程序的功能使用。
有关配置文件的讨论就到此为止,以上也只是自己的一些浅显理解,详细代码请参考以下源码。
本文源码下载:
相关文章
- 解决错误 ERROR [WinError 10049] 在其上下文中,该请求的地址无效。
- Python os.mknod 运行报错无法创建文件
- Python os.path.dirname(__file__) 在终端命令行下报错
- 聊聊Python中的递归与快速排序那点事
- 妙用IPython学习Python--IPython快速上手
- Python生成器yield应用实例——监控日志
- 如何快速的复习学习过的Python
- python中导入不同目录中的自定义模块/class/函数/方法
- 浅谈Python中的协程及利用协程代替多线程及多进程并发编程
- 聊聊Python中晦涩的生成器(yield)与生成器表达式
- Python中创建TCP服务器与客户端进行通信(下)Tk、thread与socket组合。
- Python中创建TCP服务器与客户端进行通信(上)
- Python程序在Windows10终端运行中文乱码解决方法
- 你与黑客之间差了多少行Python代码?
- 聊聊Python闭包(Closure)的那点事。
- Python并发编程(下)功能强大设置简单的分布式多进程生产者与消费者模式
- Python并发编程(上)进程模块multiprocessing模块和Process类
- Python多线程编程(下)多线程锁 threading.Lock
- Python多线程编程(上)多线程创建的几种方法
- python 类的静态方法和类方法
- Python面向对象编程(OOP)初探
- Python random 随机数模块操作总结
- Python3 datetime模块的时间操作
- python3函数学习笔记简单总结
- PythonINI配置文件读写的简单方法
- Python open()函数文件打开、读、写操作总结
- Python os.path模块中一些常用方法的整理总结
- Python 采集数据三步曲之[Requests + re.py模块进行数据采集]
- Python 采集数据三步曲之[Requests开源协议的HTTP 库]
- Python 采集数据三步曲之[正则表达式 re.py]
- python3 Markdown模块解析Markdown代码
- 创建python 虚拟环境 venv