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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑老是弹出vrvedp_m_出现三个可疑进程vrvedp_m.exe vrvrf_c.exe vrvsafec.exe

满意答案 你机器里装了北信源的DeviceRegist软件,这个软件不是杀毒软件或者防毒软件,而是一个远程桌面管理软件。这类软件其实和木马程序原理上一样,只不过是正规软件公司开发的,但是流氓程度不容小觑,即使在安全模式下也会加载vrvrf_c.exe,vrvedp_m.exe,vrvsafec.exe,wat…

音视频编解码 文件格式 协议内容详解

编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间。尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析、应用开发、释放license收费等等。最…

git 拉取远程其他分支代码_【记录】git 拉取远程分支代码,同步到另一个git上...

最近有需求从某git 上拉取所有分支代码同步到另一git上,现记录操作步骤,以便日后使用:1:先克隆其中一个分支代码到本地环境git clone -b test http://账号:密码XXX.git2:查看本地分支git brach3:查看远程分…

WIN下的CMD下载命令

certutil -urlcache -split -f 远程地址 本地保存的文件跑径与文 件名 # 如里不写本地文 件名与路径名, 会自动跟远程文 件名相同, 并保存到当前目 录下另一个是: bitsadmin /rawreturn /transfer getfile http://download.sysinternals.com…

python 第三方模块之 APScheduler - 定时任务

介绍 APScheduler的全称是Advanced Python Scheduler。它是一个轻量级的 Python 定时任务调度框架。APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),Linux 下的 Crontab 命令。同时,它还支持…

hadoop分布式搭建

一,前提:下载好虚拟机和安装完毕Ubuntu系统。因为我们配置的是hadoop分布式,所以需要两台虚拟机,一台主机(master),一台从机(slave) 选定一台机器作为 Master 在 Master …

Python 第三方模块之 imgaug (图像增强)

imgaug是一个封装好的用来进行图像augmentation的python库,支持关键点(keypoint)和bounding box一起变换。 项目主页: imgaug doc 1. 安装和卸载 # 通过github安装 sudo pip install githttps://github.com/aleju/imgaug# 通过pypi安装 sudo pip install imgaug# 本地安装, …

MPEG(mpeg1,mpeg2,mpeg4) 与H264 QP值间 关系

H264 Quant与MPEG Quant数值参对表 x264vfw 的1pass 是按照I q:21P q:24B q:26的量化算的,而且在vfw里面不能改变这些参数.但在mencoder里则可以定义1pass的 qp_constant<1−51>这个和xvid不同的,xvid一般是用q2跑1pass的,当然你也可以在x264设置一下,但是要清楚的是 H.2…

maya脚本用python还是mel_替换/替换材质的Maya Python/MEL脚本

在CreativeCrash上有一个旧线程处理此问题。我在那里展示的脚本如下(请参阅原始线程了解更多信息)&#xff1a;proc connectAndSet(string $original, string $target){$conn connectionInfo -sfd $original;if ($conn ! ""){connectAttr -force $conn $target;} el…

FreeBSD长模式不兼容

二进制转换与此平台上的长模式不兼容。此虚拟环境中的长模式将被禁用。因此需要使用长模式的应用程序将无法正常运行。请参见 http://vmware.com/info?id152 了解更多详细信息。 mark转载于:https://www.cnblogs.com/tuhooo/p/8116442.html

Python 第三方模块之 numpy.random

本文概述 随机数是NumPy库中存在的模块。该模块包含用于生成随机数的功能。该模块包含一些简单的随机数据生成方法, 一些排列和分布函数以及随机生成器函数。 简单随机数据 简单随机数据具有以下功能&#xff1a; 1)p.random.rand(d0, d1, …, dn) 随机模块的此功能用于生…

xvid 详解 代码分析 编译等

1. Xvid参数详解 众所周知&#xff0c;Mencoder以其极高的压缩速率和不错的画质赢得了很多朋友的认同&#xff01; 原来用Mencoder压缩Xvid的AVI都是使用Xvid编码器的默认设置&#xff0c;现在我来给大家冲冲电&#xff0c;讲解一下怎样使用Mencoder命令行高级参数制作Xvid编…

s4800扫描电镜的CSS3_Hitachi S-4800型场发射扫描电子显微镜+能谱

一、主要部件&#xff1a;S-4800主机(包括真空系统、电子光学系统、检测器)、X射线能谱仪&#xff0c;E-1030喷金喷碳装置等。二、主要性能指标&#xff1a;二次电子分辨率&#xff1a;1.0 nm(15 kV)&#xff1b;2.0 nm(1 kV)&#xff1b;背散射电子分辨率&#xff1a;3.0 nm (…

很多人喜欢露脚踝你觉得时尚吗?

当然是 时尚时尚最时尚的 露&#xff01;****脚&#xff01;脖&#xff01;子&#xff01;image.png人生就是这么奇怪 美容整形可以让你拥有想要的五官 做个手术健个身能让你拥有梦寐的线条 唯独身高这事很难改变&#xff08;说多了都是泪&#xff09; 氮素呢 再难也难不倒众位…

深度学习之生成式对抗网络 GAN(Generative Adversarial Networks)

一、GAN介绍 生成式对抗网络GAN&#xff08;Generative Adversarial Networks&#xff09;是一种深度学习模型&#xff0c;是近年来复杂分布上无监督学习最具前景的方法之一。它源于2014年发表的论文&#xff1a;《Generative Adversarial Nets》&#xff0c;论文地址&#xf…

android object数组赋值_Java对象数组定义与用法详解

本文实例讲述了Java对象数组定义与用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;所谓的对象数组&#xff0c;就是指包含了一组相关的对象&#xff0c;但是在对象数组的使用中一定要清楚一点&#xff1a;数组一定要先开辟空间&#xff0c;但是因为其是引用数据类…

Fiddler抓取https证书问题

正常的使用方法 Fiddler 抓包工具总结 大部分问题的解决方案 fiddler4在win7抓取https的配置整理 像我脸一样黑的解决方案 Fiddler https 证书问题 可能的解释&#xff1a; Fiddler自带两个cert engine&#xff0c;一个是makecert&#xff0c;一个是CertEnroll&#xff0c;可…

深度学习之目标检测:R-CNN、Fast R-CNN、Faster R-CNN

object detection 就是在给定的图片中精确找到物体所在位置&#xff0c;并标注出物体的类别。object detection 要解决的问题就是物体在哪里&#xff0c;是什么这整个流程的问题。然而&#xff0c;这个问题不是容易解决的&#xff0c;物体的尺寸变化范围很大&#xff0c;摆放物…

九江机器人餐厅_机器人精通200道佳肴 九江学院来了多位机器厨神

九江学院来了多位“机器厨神”●炒菜机一次能炒近10公斤菜&#xff0c;三四分钟就能出锅&#xff0c;味道也不错●煮饭机从淘米到煮熟全部自动机械化操作&#xff0c;效率提高了不少电脑开启&#xff0c;设定好程序&#xff0c;机器就可以自动运转&#xff0c;快速炒出美味可口…

深度学习之边框回归(Bounding Box Regression)

从rcnn&#xff0c; fast rcnn, faster rcnn, yolo, r-fcn, ssd&#xff0c;到cvpr的yolo9000。这些paper中损失函数都包含了边框回归&#xff0c;除了rcnn详细介绍了&#xff0c;其他的paper都是一笔带过&#xff0c;或者直接引用rcnn就把损失函数写出来了。前三条网上解释比较…