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'))

Python之ini配置文件详解的更多相关文章

  1. php.ini – 配置文件详解

    详见: https://my.oschina.net/miaowang/blog/299546 这个文件必须命名为''php.ini''并放置在httpd.conf中的PHPIniDir指令指定的目录 ...

  2. php.ini配置文件详解(基于5.2.17版本)

    [PHP] ;;;;;;;;;;;;;;;;;;;; About php.ini ;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;; 关于php.ini文件 ;;;;; ...

  3. VC++/MFC操作ini配置文件详解

    在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中. 1.所用的WINA ...

  4. MYSQL ini 配置文件详解及性能优化方案

    my.ini分为两块:Client Section和Server Section.   Client Section用来配置MySQL客户端参数.   要查看配置参数可以用下面的命令: show va ...

  5. LAMP 2.8 php.ini配置文件详解

    修改php配置文件,但有时候我们并不知道 php.ini 所在路径,这时候就需要通过命令来查一查在哪里. /usr/local/php/bin/php -i |head 看那一行 Loaded Con ...

  6. Apache 的 php.ini 配置文件详解

    [root@taokey ~]# grep -v ";" /application/php/lib/php.ini [PHP] engine = On  ——→  是否启用 PHP ...

  7. Openstack Paste.ini 文件详解

    目录 目录 pasteini 配置文件详解 composite pipeline filter app DEFAULT server Request 被 pasteini 处理的流程 如何加载 pas ...

  8. my.ini配置详解

    Mysql my.ini 配置文件详解 #BEGIN CONFIG INFO #DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大 #TYPE: SYSTEM ...

  9. kafka实战教程(python操作kafka),kafka配置文件详解

    kafka实战教程(python操作kafka),kafka配置文件详解 应用往Kafka写数据的原因有很多:用户行为分析.日志存储.异步通信等.多样化的使用场景带来了多样化的需求:消息是否能丢失?是 ...

随机推荐

  1. 3D建模服务提供更高效、专业的能力,“筑”力开发者

    3D建模服务(3D Modeling Kit)是HMS Core在图形图像领域又一技术开放.3D建模产品的定位就是要做快速.简洁.低成本的3D制作能力,并陆续开放给有3D模型.动画游戏制作等能力诉求的 ...

  2. Redis入门及环境搭建

    一:Redis简介 Redis(Remote Dictionary Server 远程字典服务)是一个开源的(BSD许可的)内存数据结构存储,用作数据库.高速缓存和消息队列代理. Redis提供五大基 ...

  3. Mac 常用的 20 款效率神器推荐

    01.IntelliJ IDEA -- JetBrains 系列产品 02.GoLand -- JetBrains 系列产品 03.Alfred 04.Google Chrome 05.iTerm2 ...

  4. ApacheJemeter的简单使用

    前言:最近由于工作需要进行接口测试,故简单复习一下ApacheJemeter的使用 安装包下载地址: 链接:https://pan.baidu.com/s/11ywNWRUkFNNBCWw4HiO6B ...

  5. CentOS 7中的系统语言包及UTF-8、en_US.UTF-8和zh_CN.UTF-8的区别

    UTF-8.en_US.UTF-8和zh_CN.UTF-8的区别 en_US.UTF-8.zh_CN.UTF-8叫做字符集,就是说'A'.'B'.'中'.'国'等对应的整数值,en_US.UTF-8只 ...

  6. js添加元素代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 匿名内部类不能访问外部类方法中的局部变量,除非变量被声明为final类型

    1. 这里所说的"匿名内部类"主要是指在其外部类的成员方法内定义,同时完成实例化的类,若其访问该成员方法中的局部变量,局部变量必须要被final修饰.2. 原因是编译程序实现上的困 ...

  8. 随机数类 Random

    import java.util.Random; /* 随机数类 Random 需求: 编写一个函数随机产生四位的验证码. */ public class Demo5 { public static ...

  9. maven项目pom文件下载的包放在哪

    右击项目configure bulid path ----->libraries--->maven dependencies 可以看到每个jar的存放路径

  10. Java多线程之读写锁机制

    Java多线程中有很多的锁机制,他们都有各自的应用场景,例如今天我说的这种锁机制:读写锁 读写锁,见名知意,主要可以进行两种操作,读和写操作,他们之间结合使用起来又是各不相同的.比如多个线程之间可以同 ...