Python 内置模块之 ConfigParser - 解析 ini 文件
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 文件相关推荐
- python解析ini文件
新建一个config.ini文件 [LocalDB] ip=127.0.0.1 prot=3306 user=root passwd=123456 db=proxy python中解析ini文件的库为 ...
- 解决ini-parser解析ini文件中文乱码问题
解决ini-parser解析ini文件中文乱码问题 参考文章: (1)解决ini-parser解析ini文件中文乱码问题 (2)https://www.cnblogs.com/nodegis/p/95 ...
- Python编程--使用PyPDF解析PDF文件中的元数据
Python编程–使用PyPDF解析PDF文件中的元数据 元数据 作为一种文件里非常明显可见的对象,元数据可以存在于文档.电子表格.图片.音频和视频文件中.创建这些文件的应用程序可能会把文档的作者.创 ...
- 「Python」 ElementTree模块解析xml文件,建议小白阅读全文
背景 Python有三种方法解析xml:SAX,DOM,Elementree.本文记录ElementTree方法解析xml. 目前自己用的是Python3.6,但在该版本中并没有xml的缩进函数ET. ...
- vb 解析ini文件_PHP文件及运行(适合PHP初学者)
PHP文件及运行(适合PHP初学者) PHP文件可包含HTML.JavaScript代码和 PHP代码,换句话说PHP 代码可以嵌入HTML文档.PHP文件名以php为后缀. PHP代码以" ...
- Java当中解析ini文件对应到JavaBean当中
目录 1.ini文件简介 2.ini文件 3.ini解析工具类 4.示例运行结果 1.ini文件简介 .ini 文件是Initialization File的缩写,即初始化文件,是windows的系统 ...
- python解析xml文件elementtree_在python中使用ElementTree解析xml文件
ElementTree是python自带的处理xml格式文件的模块,位于libxmletreeElementTree.py.这个模块有两个基本概念:Element和ElementTree. 表示整个树 ...
- python ui自动化配置文件,Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)...
在自动化测试项目中,可能会碰到一些经常使用的但 很少变化的配置信息,下面就来介绍使用configparser来读取配置信息config.ini 读取的信息(config.ini)如下: [config ...
- Python基础day07 作业解析【文件操作(文件读写、文件夹操作)】
视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day07[文件读写.文件夹操作.面向对象(类.对象)] 目录 加强训练 题目1 ...
最新文章
- 敏捷和DevOps:是敌是友?
- windows 关闭端口被占用脚本
- 11.Windows线程切换_线程优先级
- abstract类中不可以有private的成员_别再说你不懂java面向对象了,阿里P7大佬一次性给你讲的明明白白
- 同一套代码,复制出来,变成另外一个项目
- 机器学习任务的一般步骤
- 如果有人再问你 Java 的反射,把这篇文章扔给他
- Spring Boot2.1.5(8)--- 各Starter介绍
- 如何用Sql更新默认值
- ASV2011英文绿色版
- [vs2015 + AE]建立窗体应用程序的简单实验
- tp5 JWT生成token验证接口安全、防止高频请求
- python字典转字符串并输出其长度_从Python中SOX的字符串输出中获取字典中的可用数据...
- 微信小程序嵌套h5页面+发布微信小程序(超级简单)
- Git rm和rm --cached区别
- 全球及中国散热产业竞争现状与市场价值分析报告2022版
- 别人问我:为什么程序员都不善言辞?惭愧啊!
- yum安装Jenkins报错Error in PREIN scriptlet in rpm package jenkins-2.204.5-1.1.noarch
- 视频教程-从零开始开发3D跑酷游戏教程-Unity3D
- mount unmount oracle,umount- 0506-349 Cannot unmount -dev-cd0- The requested reso
热门文章
- 二十一世纪Windows简史
- OpenCV 2.4.0 正式版发布,开源计算机视觉库
- 基于DirectShow的流媒体解码和回放
- Linux find命令、Linux rmdir命令、Linux ls命令
- IntelliJ 创建main函数、for循环、输出语句快捷键
- docker:安装mysql多个
- Hystix熔断解决雪崩问题
- 448. Find All Numbers Disappeared in an Array 寻找有界数组[1,n]中的缺失数
- java基础—方法重载(overload)
- Swift调用Objective C的FrameWork