Python ini配置文件示例详解
作者:Edisonyao 发布时间:2023-08-24 09:07:36
INI介绍
INI是英文“初始化”(initialization)的缩写,被用来对操作系统或特定程序初始化或进行参数设置。由节(section)、
键(key)、值(value)构成。在windows系统中有很多INI文件,例如“System32.ini”和“Win.ini”,相信大家并不陌生。Python
中操作配置文件的模块为configparser,这个模块可以用来解析与Windows上INI文件结构类似的文件。
关于configparser
在python2中该模块名为Configparser,到python3才改为configparser,该模块是用来解析ini配置文件的解析器。
其作用就是使用模块中的RawConfigParser()、ConfigParser()、SafeConfigParser()这三个方法(任选一种),创建一
个对象使用对象的方法对指定的配置文件做增删改查操作。
本次使用的python版本为3.8,编译器使用pycharm。
INI文件格式
INI配置文件组成:
section:表示一个区块,由方括号及方括号中的名称组成,section的范围为当前方括号到下一个方括号的内容,如“DEFAULT”,“select”,“connect_mysql”。
大小写和空格检查:section中的名称在保存和获取的时候是原样保存和获取的,即大小写不一样或者空格不一样等都是不同的section;重复性检查:同一个配置文件中section名称不允许重复。
option:表示section中的配置项,由key、分隔符和value组成的键值对,如“select”下的“broswer = Chrome”。
大小写检查:key是大小写不敏感的,保存进文件的时候会自动将key小写保存,但value是大小写敏感的;空格检查:通过key获取value时,会自动将文件中的key和value前后空格去掉再进行匹配,即文件中保存为' broswer = Chrome '时,用'broswer'也可以获取到对应的value值'Chrome';跨多行检查:key是不能跨行的,但是value可以跨行,只要第二行及之后行的缩进与第一行不同即可,一直到下一个option为止;重复性检查:和section一样,同一section下的key是不允许重复的;分隔符:可以是等号“=”或者冒号“:”。
注释:行注释用井号“#”或者分号“;”表示,特别需要注意的是必须得是行开头(前面可以有空格),用在行中间的就不会算作是注释了。
DEFAULT:这是一个特殊的section,会用作其他section的option取不到值时的备用值,或者可以理解为它是一个root,其他的section都是它的子section,但不是必须提供的。
读取配置文件
import os
import configparser
conf = configparser.ConfigParser() # 类的实例化
curpath = os.path.dirname(os.path.realpath(__file__))
path = os.path.join(curpath,'read.ini')
conf.read(path,encoding="utf-8")
value = conf['select']['url']
print("通过read方法取得的值为:",value)
value = conf.get('login','username')
print('通过get方法取得的值:',value)
value = conf.items('login') # 读取一个section中的所有数据,返回一个列表
print("通过items方法取得的值:",value)
value = conf.getint('connect_mysql','port') # 指定读取数据的类型
print("指定数据类型取出的值:",value)
section = conf.sections() # 读取配置文件中所有section
print(section)
运行结果
注意:配置文件注释有中文的,在python3中要加上参数encoding="utf-8",不然会报错。
conf.read(path,encoding="utf-8")
写入配置文件
import os
import configparser
conf = configparser.ConfigParser() # 类的实例化
curpath = os.path.dirname(os.path.realpath(__file__))
path = os.path.join(curpath,'read.ini')
conf.add_section('login') # 添加一个新的section
conf.set('login','username','admin')
conf.set('login','password','123123') # 往配置文件写入数据
conf.write(open(path,'a')) # 保存数据
运行以后查看配置文件,可以看到新的section已经写入到文件中。
write写入常用的两种方式,第一种是删除原文件内容,重新写入:w
conf.write(open(path,'w'))
第二种是在原文件基础上继续写入内容,追加模式写入:a
conf.write(open(path,'a'))
来源:https://www.cnblogs.com/Sweettesting/p/15965528.html
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- python去除字符串最后的换行符‘\n’s = s.replace('\n',
- 栈溢出const data = { foo: 1 }const obj = new Proxy(data, {/*...*/})effect
- 前言利用Python docx模块,可以很方便地打开和修改Word 2007及以后的文档。本文简单地介绍了如何使用python修改word文
- 这篇文章主要介绍了pandas和spark dataframe互相转换实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定
- 当地址栏没有参数"id"时: 代码如下:Request.QueryString["ID"] == n
- 一、Python不同版本的类Python2.2之前是没有共同的祖先的,之后引入Object类,它是所有类的共同祖先类ObjectPython
- 一、复习首先将上次画的矩形做复杂一些的小程序:import pygame,sys, randompygame.init()screen =
- 对于SQL Server的优化来说,优化查询可能是很常见的事情。由于数据库的优化,本身也是一个涉及面比较的广的话题,因此本文只谈优化查询时如
- Python爬虫分析前言:计算机行业的发展太快了,有时候几天不学习,就被时代所抛弃了,因此对于我们程序员而言,最重要的就是要时刻紧跟业界动态
- 新手刚开始使用vue时,常会遇见一个坑,那就是热替换失效。什么?你跟我说使用官方的vue-cli去构建,我就是使用vue-cli后突然失效。
- 一、原理1.图片必须具有经纬度信息2.经纬度格式转换2.1 GPS点坐标的两种表示方式(误差还是有的)2.1.1 十进制换度分秒例:经纬度1
- Google Chrome 的发布,使我们更加的注重基于 WebKit 核心的浏览器的表现情况,但我们很多时候“不小心”就会出现问题。考虑下
- 全栈即指的是全栈工程师,指掌握多种技能,并能利用多种技能独立完成产品的人。就是与这项技能有关的都会,都能够独立的完成。全栈只是个概念,也分很
- 知识掌握 cv2.threshold()函数:设置固定级别的阈值应用于多通道矩阵,将灰度图像变换二值图像,或去除指定级别的噪声,或过滤掉过小
- 如何在pytorch中使用word2vec训练好的词向量torch.nn.Embedding()这个方法是在pytorch中将词向量和词对应
- 如何准确地获得一个整数?当然可以,Format就是做这个的“专家”:function NumbersOnlyNoDecimals(
- LABjs 是一个很小的 JavaScript 工具,用来根据需要加载 JavaScript 文件,通过使用该工具可以提升页面的性能,避免加
- 本文实例讲述了JavaScript使用setTimeout实现延迟弹出警告框的方法。分享给大家供大家参考。具体如下:先给大家展示一个延迟/定
- 本文是基于上一篇(python项目:学生信息管理系统(初版) )进行了完善,并添加了新的功能。主要包括有:完善部分:输入错误;无数据查询等异
- 基于底层数据来开发不难,无非是将用户输入变量作为筛选条件,将参数映射到 sql 语句,并生成一个 sql 语句然后再去数据库执行最后再利用