ini配置文件是被configParser直接解析然后再加载的,如果只是修改配置文件,并不会改变已经加载的配置

INI文件结构简单描述

INI文件就是扩展名为“ini”的文件。在Windows系统中,INI文件是很多,最重要的就是“System.ini”、“System32.ini”和“Win.ini”。
该文件主要存放用户所做的选择以及系统的各种参数。用户可以通过修改INI文件,来改变应用程序和系统的很多配置。但自从Windows 95的退出,在Windows系统中引入了注册表的概念,INI文件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点,使应用程序和系统都把许多参数和初始化信息放进了注册表中。但在某些场合,INI文件还拥有其不可替代的地位。

INI文件结构

INI文件是一种按照特点方式排列的文本文件。每一个INI文件结构都非常类似,由若干段落(section)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键词(keyword)和一个等号,等号右边的就是关键字对应的值(value)。其一般形式如下:

[Section1]
KeyWord1 = Valuel
KeyWord2 = Value2
……
[Section2]
KeyWord3 = Value3
KeyWord4 = Value4

其中:[Section1]用来表示一个段落。因为INI文件可能是项目中共用的,所以使用[Section]段名来区分不同用途的参数区。

例如:[Section1]表示传感器灵敏度参数区;[Section2 ]表示测量通道参数区等等。KeyWord1=value1 用来表示一个参数名和值。

格式

INI文件由节、键、值组成。

[section]

参数(键=值)

name=value

注解

注解使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。

; comment text

linux 配置文件使用 # 注释;

# comment text

Python ConfigParser

Python 标准库的 ConfigParser 模块提供了一套完整的 API 来读取和操作配置文件。

在python 3 中ConfigParser模块名已更名为configparser。
configparser模块支持读取.conf和.ini等类型的文件。
但是存在一些缺陷,无法识别section的大小写,无法读取文件注释,这样修带有注释的配置文件时就会存在问题。

操作配置文件

配置文件实例化

# 实例化 CoinfigParser 并加载配置文件
config = ConfigParser.SafeConfigParser()
config.read('config.ini')# 读取配置文件内容,f必须是unicode
config.read_file(f, source=None)
# 从字符串解析配置数据
config.read_string(string, source=’’)
# 从词典解析配置数据
config.read_dict(dictionary, source=’’)

配置文件的读取和修改

# sections(): 得到所有的section,并以列表的形式返回
config.sections()# defaults():返回一个包含实例范围默认值的词典
config.defaults()# 添加一个新的section
config.add_section(section)# 判断是否有section
config.has_section(section)# 得到该section的所有option
config.options(section)# items 得到section的所有键值对
config.items(option)# 判断如果section和option都存在则返回True否则False
config.has_option(section, option)# 得到section中option的值,返回为string类型
config.get(section, option, *, raw=False, vars=None[, fallback])# 得到section中option的值,返回为int类型
config.getint(section,option)# 得到section中option的值,返回为float类型
config.getfloat(section,option)# 得到section中option的值,返回为boolean类型
config.getboolean(section, option)# 对section中的option进行更新,如果没有相应的option,会新增
config.set(section, option, value)# 从指定section移除option
config.remove_option(section, option)# 移除section
config.remove_section(section)

配置文件的写入

with open("config.ini", "w+") as f:config.write(f)# 将配置信息输出到标准输出
config.write(sys.stdout)# 将配置文件输出到文件
config.write(open('new_book.info','w'))

示例

import threading
import configparser
class Config(object):_instance_lock = threading.Lock()def __init__(self):self.config = configparser.ConfigParser()self.config.read("config.ini")# single mode,the config file must be control by the only onedef __new__(cls, *arg, **kwargs):if not hasattr(Config, "_instance"):with Config._instance_lock:if not hasattr(Config, "_instance"):Config._instance = object.__new__(cls)return Config._instancedef get_config(self, section, k):return self.config.get(section, k)def get_section(self):return self.config.sections()def get_section_all_key(self, section):return self.config.options(section)def add_section(self, section):self.config.add_section(section)def update_k(self, section, k, v):# 更新相应的k,如果没有对应的k,会自动创建 k,判断k时不区分大小写。self.config.set(section, k, v)def remove_section(self, section):self.config.remove_section(section)def remove_k(self, section, k):self.config.remove_option(section, k)def save_config(self):with open("config.ini", "w+") as f:self.config.write(f)

操作字典的方式操作文件

"""生成configparser配置文件 ,字典的形式"""
import configparser
config = configparser.ConfigParser()# 第一种写法
config["DEFAULT"] = {'ServerAliveInterval': '45','Compression': 'yes','CompressionLevel': '9'}# 第二种写法
config['bitbucket.org'] = {}
config['bitbucket.org']['User'] = 'hg'# 第三种写法
config['topsecret.server.com'] = {}
topsecret = config['topsecret.server.com']
topsecret['Host Port'] = '50022'  # mutates the parser
topsecret['ForwardX11'] = 'no'  # same hereconfig['DEFAULT']['ForwardX11'] = 'yes'# 写入后缀为.ini的文件
with open('example.ini', 'w') as configfile:config.write(configfile)

Python 内置模块之 ConfigParser - 解析 ini 文件相关推荐

  1. python解析ini文件

    新建一个config.ini文件 [LocalDB] ip=127.0.0.1 prot=3306 user=root passwd=123456 db=proxy python中解析ini文件的库为 ...

  2. 解决ini-parser解析ini文件中文乱码问题

    解决ini-parser解析ini文件中文乱码问题 参考文章: (1)解决ini-parser解析ini文件中文乱码问题 (2)https://www.cnblogs.com/nodegis/p/95 ...

  3. Python编程--使用PyPDF解析PDF文件中的元数据

    Python编程–使用PyPDF解析PDF文件中的元数据 元数据 作为一种文件里非常明显可见的对象,元数据可以存在于文档.电子表格.图片.音频和视频文件中.创建这些文件的应用程序可能会把文档的作者.创 ...

  4. 「Python」 ElementTree模块解析xml文件,建议小白阅读全文

    背景 Python有三种方法解析xml:SAX,DOM,Elementree.本文记录ElementTree方法解析xml. 目前自己用的是Python3.6,但在该版本中并没有xml的缩进函数ET. ...

  5. vb 解析ini文件_PHP文件及运行(适合PHP初学者)

    PHP文件及运行(适合PHP初学者) PHP文件可包含HTML.JavaScript代码和 PHP代码,换句话说PHP 代码可以嵌入HTML文档.PHP文件名以php为后缀. PHP代码以" ...

  6. Java当中解析ini文件对应到JavaBean当中

    目录 1.ini文件简介 2.ini文件 3.ini解析工具类 4.示例运行结果 1.ini文件简介 .ini 文件是Initialization File的缩写,即初始化文件,是windows的系统 ...

  7. python解析xml文件elementtree_在python中使用ElementTree解析xml文件

    ElementTree是python自带的处理xml格式文件的模块,位于libxmletreeElementTree.py.这个模块有两个基本概念:Element和ElementTree. 表示整个树 ...

  8. python ui自动化配置文件,Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)...

    在自动化测试项目中,可能会碰到一些经常使用的但 很少变化的配置信息,下面就来介绍使用configparser来读取配置信息config.ini 读取的信息(config.ini)如下: [config ...

  9. Python基础day07 作业解析【文件操作(文件读写、文件夹操作)】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day07[文件读写.文件夹操作.面向对象(类.对象)] 目录 加强训练 题目1 ...

最新文章

  1. 敏捷和DevOps:是敌是友?
  2. windows 关闭端口被占用脚本
  3. 11.Windows线程切换_线程优先级
  4. abstract类中不可以有private的成员_别再说你不懂java面向对象了,阿里P7大佬一次性给你讲的明明白白
  5. 同一套代码,复制出来,变成另外一个项目
  6. 机器学习任务的一般步骤
  7. 如果有人再问你 Java 的反射,把这篇文章扔给他
  8. Spring Boot2.1.5(8)--- 各Starter介绍
  9. 如何用Sql更新默认值
  10. ASV2011英文绿色版
  11. [vs2015 + AE]建立窗体应用程序的简单实验
  12. tp5 JWT生成token验证接口安全、防止高频请求
  13. python字典转字符串并输出其长度_从Python中SOX的字符串输出中获取字典中的可用数据...
  14. 微信小程序嵌套h5页面+发布微信小程序(超级简单)
  15. Git rm和rm --cached区别
  16. 全球及中国散热产业竞争现状与市场价值分析报告2022版
  17. 别人问我:为什么程序员都不善言辞?惭愧啊!
  18. yum安装Jenkins报错Error in PREIN scriptlet in rpm package jenkins-2.204.5-1.1.noarch
  19. 视频教程-从零开始开发3D跑酷游戏教程-Unity3D
  20. mount unmount oracle,umount- 0506-349 Cannot unmount -dev-cd0- The requested reso

热门文章

  1. 二十一世纪Windows简史
  2. OpenCV 2.4.0 正式版发布,开源计算机视觉库
  3. 基于DirectShow的流媒体解码和回放
  4. Linux find命令、Linux rmdir命令、Linux ls命令
  5. IntelliJ 创建main函数、for循环、输出语句快捷键
  6. docker:安装mysql多个
  7. Hystix熔断解决雪崩问题
  8. 448. Find All Numbers Disappeared in an Array 寻找有界数组[1,n]中的缺失数
  9. java基础—方法重载(overload)
  10. Swift调用Objective C的FrameWork