python之常用模块ConfigParser
这个常见于.conf,.ini等类型的配置文件
下面先看一下如果通过python生成一个.ini文件
import configparser #2.x is ConfigParser
config = configparser.ConfigParser() #先生成一个对象
config["DEFAULT"] = {'ServerAliveInterval': '45',
'Compression': 'yes',
'CompressionLevel': '9'}
'''
config["DEFAULT"]自动生成根节点,等号右面的是这个节点下面的值,相当于DEFAULT是key,后面的是values
'''
config['bitbucket.org'] = {} #这是第二个key,value是空的
config['bitbucket.org']['User'] = 'hg' #这是给第二个key添加了一个键值对
config['topsecret.server.com'] = {} #这是第三个key
topsecret = config['topsecret.server.com'] #这是把这个key对应的值赋值给一个变量
topsecret['Host Port'] = '50022' # 添加key和value
topsecret['ForwardX11'] = 'no' # same here
config['DEFAULT']['ForwardX11'] = 'yes'#给DEFAULT赋值key和value
with open('example.ini', 'w') as configfile: #以w的形式打开example.ini文件
config.write(configfile) #把以上的内容写入这里,生成配置文件
-----------------上面是代码,下面是结果---------------------------
自动生成了一个example.ini文件,如下:
[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes [bitbucket.org]
user = hg [topsecret.server.com]
host port = 50022
forwardx11 = no
#----------------------以下是读取上面生成的配置文件-------------------
import configparser
config = configparser.ConfigParser()
config.read('example.ini')
#查看所有的标题
res = config.sections() #当第一个根节点是大写的DEFAULT的时候,这个方法是读取不出来DEFAULT标题的,更改成其他任意值就能读取出来。但是他会把DEFAULT内的所有的key/value都划分到下一个标题中
print(res) #['bitbucket.org', 'topsecret.server.com'] 所以这里输出的值只有两个
re = config.defaults() #这个方法会把DEFAULT的key/vaule全部打出来 OrderedDict([('serveraliveinterval', '45'), ('compression', 'yes'), ('compressionlevel', '9'), ('forwardx11', 'yes')])
print(re)
#查看bitbucket.org标题下所有的key
options = config.options('bitbucket.org') #这个里面包含了DEFAULT的全部的key
print(options) #['user', 'serveraliveinterval', 'compression', 'compressionlevel', 'forwardx11'] #查看bitbucket.org标题下所有的key-value,并以(key,value)形式输出
item_list = config.items('bitbucket.org')
print(item_list) #[('serveraliveinterval', '45'), ('compression', 'yes'), ('compressionlevel', '9'), ('forwardx11', 'yes'), ('user', 'hg')] #获取bitbucket.org标题下user的值
val = config.get('bitbucket.org','user')
print(val) #hg
vall = config.get('bitbucket.org','serveraliveinterval')
print(vall) #45 这是获取的DEFAULT内的值 ------------------------------------看如何修改配置文件---------------------------------
这是配置文件:
[section1]
k1 = v1
k2:v2
user=egon
age=18
is_admin=true
salary=31
[section2]
k1 = v1 这是代码:
import configparser
config = configparser.ConfigParser()
config.read('config.conf',encoding='utf-8') #删除整个标题section2
config.remove_section('section2')
config.write(open('config1.conf','w')) #删除之后要重新写入一个新的文件才能生效
#删除标题section1下的某个k1和k2
data1 = config.remove_option('section1','k1')
config.write(open('config1.conf','w')) #判断是否存在某个标题
print(config.has_section('section1')) #判断标题section1下是否有user
print(config.has_option('section1','')) #添加一个标题
config.add_section('egon') #在标题egon下添加name=egon,age=18的配置
config.set('egon','name','egon')
config.set('egon','age',18) #报错,必须是字符串 #最后将修改的内容写入文件,完成最终的修改
config.write(open('a.cfg','w'))
python之常用模块ConfigParser的更多相关文章
- python的常用模块之collections模块
python的常用模块之collections模块 python全栈开发,模块,collections 认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文 ...
- python之常用模块二(hashlib logging configparser)
摘要:hashlib ***** logging ***** configparser * 一.hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 摘要算法 ...
- Python学习——python的常用模块
模块:用一堆代码实现了某个功能的代码集合,模块是不带 .py 扩展的另外一个 Python 文件的文件名. 一.time & datetime模块 import time import dat ...
- Python进阶--常用模块
一.模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 什么是包? 包, ...
- python基础----常用模块
一 time模块(时间模块)★★★★ 时间表现形式 在Python中,通常有这三种方式来表示时 ...
- python(五)常用模块学习
版权声明:本文为原创文章,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明. https://blog.csdn.net/fgf00/article/details/52357 ...
- Python(常用模块)
模块 模块 本质上就是一个.py文件 内置模块(解释器层面) 第三方模块(Python lib文件) 自定义模块(当前路径) 模块调用,包的概念 在计算机程序的开发过程中,随着程序代码越写越多,在一个 ...
- python基础--常用模块与面向对象基础
1常用模块 1.1 xml xml是实现不同语言或程序之间进行数据交换的协议 xml的格式如下: <?xml version="1.0"?> <data> ...
- Python编程-常用模块及方法
常用模块介绍 一.time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行 ...
随机推荐
- Java基础:浅谈数据输入流/数据输出流《DataInputstream类与DataOutputstream类》
一.理论概述 数据输入/输出流(DataInputStream类与DataOutputStream类) 允许应用程序以与机器无关的方式从底层输入流中读取基本Java数据类型. 说白了就是,当读取一个 ...
- phpstudy渗透到服务器
0x00 目标站点www.test.ichunqiu 0x01 尝试登陆系统 -尝试弱密码登陆 结果:forbidden!!! -尝试万能账号密码登陆 1‘ or 1=1--+ 和 1‘ or 1=1 ...
- 前端每日实战:114# 视频演示如何用纯 CSS 和混色模式创作一个 loader 动画
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MqYroW 可交互视频 此视频是可 ...
- 一键制作镜像并发布到k8s
*:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...
- 基于springboot多模块项目使用maven命令打成war包放到服务器上运行的问题
首先,大家看到这个问题,可能并不陌生,而且脑子里第一映像就是使用mava中的clear package 或者 clear install进行打包,然后在项目中的target文件夹下面找到xxx.war ...
- Javascript中的Math.max()和Math.min()
Math.max()是求最大值,Math.min()是求最小值 Math.max(value1,value2,value3....) 但是如果是数组或者对象呢? var numArr = [1,2,4 ...
- 【01】openLayers 第一个地图
效果: 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <t ...
- TARS基金会:构建微服务开源生态
导语 在20世纪60至70年代,软件开发人员通常在大型机和小型机上使用单体架构进行软件开发,没有一个应用程序能够满足大多数最终用户的需求.垂直行业使用的软件代码量更小,与其他应用程序的接口更简单,而可 ...
- 上海月薪 1w 和家乡月薪 5000 你选择哪?
如题,这是我在知乎上看到的一个热门话题--要现在的我来回答的话,毫无疑问会选择上海,即便月薪只有 5000 也去,还要趁早去. 有读者可能会质问我:"你之前不是说在三线城市洛阳工作很爽吗?怎 ...
- Echart饼形图和折线图的循环展示及选择展示
需求:根据不同的入参调同一接口,循环展示一组饼形图或折线图: 主要问题:在于给定的数据格式不符合图表的配置项格式,需要拆分组装数据:首先默认展示几个图表,当选中一个类别,需要展示其中一个的时候,页面中 ...