(十八)configparser模块
configparser模块一般是用来处理配置文件的,如:
[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes [bitbucket.org]
User = hg [topsecret.server.com]
Port = 50022
ForwardX11 = no
如果想用python生成一个这样的配置文件怎么做?
把配置文件当做一个类似字典的对象去处理,即处理键值对
import configparser
config = configparser.ConfigParser() #拿到config对象 config["DEFAULT"] = {'ServerAliveInterval': '45', #第一个[DEFAULT]块,像字典一样去定义;[DEFAULT]块是默认的块,有特殊之处,见后面
'Compression': 'yes',
'CompressionLevel': '9'} config['bitbucket.org'] = {} #第二个[bitbucket.org]块
config['bitbucket.org']['User'] = 'hg' config['topsecret.server.com'] = {'Port':'50022', #第三个[topsecret.server.com]块
'ForwardX11':'no'} with open('test.ini', 'w') as configfile: #自定义写入的文件
config.write(configfile)
查看
import configparser
config = configparser.ConfigParser() config.read('test.ini') #读取文件 print(config.sections()) #['bitbucket.org', 'topsecret.server.com'] #sections()就是所有的块,不包括DEFAULT默认块 print('bytebong.com' in config)# False #不存在就是false print(config['bitbucket.org']['User']) # hg #存在,拿到键user对应的值hg print(config['DEFAULT']['Compression']) #yes #存在,拿到键compression对应的值yes for key in config['bitbucket.org']: #user serveraliveinterval compression compressionlevel #除了user,还拿到了DEFAULT默认块里的键
print(key)
结果:
['bitbucket.org', 'topsecret.server.com']
False
hg
yes
user
serveraliveinterval
compression
compressionlevel
查看还有三个方法:
print(config.options('bitbucket.org')) #options()拿到键,同样包括默认块
#['user', 'serveraliveinterval', 'compression', 'compressionlevel']
print(config.items('bitbucket.org')) #items()拿到键值对,同样包括默认块
#[('serveraliveinterval', '45'), ('compression', 'yes'), ('compressionlevel', '9'), ('user', 'hg')]
print(config.get('bitbucket.org','compression')) #get()拿到一个块中的一个键对应的值
#yes
所以DEFAULT块是默认块,其他的每一个块中都包括默认块中的键值对
增删改
config.add_section('yuan') #新增yuan块
config.remove_section('topsecret.server.com') #删除topsecret.server.com块
config.set('bitbucket.org','user','admin') #修改bitbucket.org块的user键对应的值为admin
config.set('bitbucket.org','passwd','123456') #新增bitbucket.org块的passwd键,值为123456
config.remove_option('bitbucket.org','user') #删除bitbucket.org块的user键值对
config.set('yuan','k1','11111') #新增yuan块的k1键,值为11111
config.write(open('test123.ini', "w")) #最后要写入文件,可以是读取时的文件(即覆盖),也可以是新增的另一个文件
最后被修改后的test123.ini文件:
[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9 [bitbucket.org]
passwd = 123456 [yuan]
k1 = 11111
(十八)configparser模块的更多相关文章
- Python学习日记(二十八) hashlib模块、configparse模块、logging模块
hashlib模块 主要提供字符加密算法功能,如md5.sha1.sha224.sha512.sha384等,这里的加密算法称为摘要算法.什么是摘要算法?它又称为哈希算法.散列算法,它通过一个函数把任 ...
- 18、手把手教你Extjs5(十八)模块记录的拖放删除、拖放复制新增
网页当中的拖放(drag-drop)是比较有趣的操作,extjs5中很好的封装了拖放的动作,也有各种类来支持,但是要学好“拖放”这个东西真是很难,特别是象我这样英语不好的人,看不太懂官网上的说明,做一 ...
- 第十八篇 模块与包--time&random模块&模块导入import(os.path.dirname(os.path.abspath(__file__)))
模块 在Python中, 一个.py文件就称为一个模块. 使用模块的好处: 1. 最大的好处就是大大提高了代码的可维护性 2. 编写代码不必从零开始.一个模块编写完毕,就可以被其他地方引用.在写其他程 ...
- Python学习日记(十八) 序列化模块
什么是序列? 就是每一个元素被有序的排成一列 什么是序列化? 就是将原本的列表.字典等内容转化成字符串的过程 什么时候会用到序列化? 数据存储(把数据放在文件.数据库),网络传输等 序列化的目的 1. ...
- Python之路(第十八篇)shutil 模块、zipfile模块、configparser模块
一.shutil 模块 1.shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中,需要打开文件 import shutil shutil.co ...
- 十八. Python基础(18)常用模块
十八. Python基础(18)常用模块 1 ● 常用模块及其用途 collections模块: 一些扩展的数据类型→Counter, deque, defaultdict, namedtuple, ...
- {Python之线程} 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Threading模块 九 锁 十 信号量 十一 事件Event 十二 条件Condition(了解) 十三 定时器
Python之线程 线程 本节目录 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Thr ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十八:SDRAM模块① — 单字读写
实验十八:SDRAM模块① — 单字读写 笔者与SDRAM有段不短的孽缘,它作为冤魂日夜不断纠缠笔者.笔者尝试过许多方法将其退散,不过屡试屡败的笔者,最终心情像橘子一样橙.<整合篇>之际, ...
- Python之路【第十八篇】:Web框架们
Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...
随机推荐
- hive实例的使用
一.hive用本地文件进行词频统计 1.准备本地txt文件 2.启动hadoop,启动hive 3.创建数据库,创建文本表 4.映射本地文件的数据到文本 5.hql语句进行词频统计交将结果保存到结果表 ...
- 自顶向下redis4.0(5)持久化
redis4.0的持久化 目录 redis4.0的持久化 简介 正文 rdb持久化 save命令 bgsave命令 rdb定期保存数据 进程结束保存数据 aof持久化 数据缓冲区 刷新数据到磁盘 ap ...
- css进阶 02-CSS布局
02-CSS布局 #前言 #常见的布局属性 (1)display 确定元素的显示类型: block:块级元素. inline:行内元素. inline-block:对外的表现是行内元素(不会独占一行) ...
- K8S构建1台master2台node+Harbor_笔记
部署环境: master.node:centos7虚拟机 网络使用本地网卡共享到VMnet1(仅主机),虚拟机使用VMnet1. 准备文件: CentOS-7-x86_64-Minimal-1810. ...
- 太酷炫了!!我会Python 导包八种方法,你呢?
1. 直接 import 人尽皆知的方法,直接导入即可 >>> import os >>> os.getcwd() '/home/wangbm'复制代码 与此类似的 ...
- 每天学习一点ES6(二)let 和 const
let 命令 let 和 var 差不多,只是限制了有效范围. 先定义后使用 不管是什么编程语言,不管语法是否允许,都要秉承先定义,然后再使用的习惯,这样不会出幺蛾子.以前JavaScript比较随意 ...
- Windows无法访问共享文件夹
问题描述 今天打开vss连接代码,提示如下信息 解决办法 可行:重置登录用户信息 原博文 https://zhidao.baidu.com/question/1174230805440255699.h ...
- 漫画 | 老泪纵横,约会也不敢耽误改bug
啥都不说了, 直接看图, 就说你中了几枪. 小莱已经抹了好几把辛酸泪-- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 关于作者 作者:大家好,我是莱乌,BAT搬砖工一枚.从 ...
- 登录&单点登录介绍
COOKIE & SESSION & TOKEN 主要用来跟踪会话,识别用户所用.cookie 是客户端,session 是服务端的. 因为 http 是无状态协议,每一次的访问都不知 ...
- react状态管理器之mobx
react有几种状态管理器,今天先来整理一下mobx状态管理器,首先了解一下什么是mobx 1.mobx成员: observable action 可以干嘛: MobX 的理念是通过观察者模式对数据做 ...