configpraser模块
configpraser配置文件,example.conf
[data] #节点
username = Jason
password = 123
[public]
comment = stuff
public = True
pi = 3.1415926
test_int = 9
程序实例
import configparser
config = configparser.ConfigParser()
config.read("example.conf", "utf-8")
ret = config.sections() #获取所有的节点
print(ret) #['data', 'public']
print(config.items('data'))#获取指定节点下的所有键值对
#[('username', 'Jason'), ('password', '123')]
print(config.options("public")) #获取指定节点下的所有键
#['comment', 'public', 'pi']
print(config.get('data', 'username')) #获取指定节点下指定key的值
#Jason
res1 = config.getint('public','test_int')#获取指定节点下key值,必须为整数否则报错
res2 = config.getfloat('public','pi')#获取指定节点下key值,必须为浮点数否则报错
res3 = config.getboolean('public','public')#获取指定节点下key值,必须为布尔值否则报错
print(res1, res2, res3)
check = config.has_section("data") #检查节点
print(check)
#True
添加节点
config.add_section('local') #添加节点
config.write(open('example.conf','w')) #
ret = config.sections()
print(ret)
#['global', 'public', 'local']
删除节点
config.remove_section('local') #删除节点
config.write(open('example.conf','w'))#重新写入文件
ret = config.sections()
print(ret)
#['global', 'public']
检查,删除,设置指定组内的键值对
#检查
check = config.has_option('public','comment')#检查节点下的某个键,返回布尔值
print(check)
输出:
True
#删除
config.remove_option('global','workgroup')
config.write(open('example.txt','w'))
ret = config.options('global')
print(ret)
#输出:
['security', 'maxlog']
#设置指定节点内的键值对
ret1 = config.get('global','maxlog')
print(ret1)
config.set('global','maxlog','100')
config.write(open('example.txt','w'))
ret2 = config.get('global','maxlog')
print(ret2)
#输出:
50
100
configpraser设置多个配置文件然后遍历,这样做Frabic作业分组问题简直超级方便,but遇到了问题!!!
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# __author__:JasonLIN
import os
import sys
import configparser
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.append(BASE_DIR)
db_path = os.path.join(BASE_DIR, "db")
config_info = configparser.ConfigParser()
group_dic = {}
group_list = os.listdir(db_path)
print(group_list)
for group in group_list:
group_path = os.path.join(db_path, str(group))
config_info.read(group_path, "utf-8")
ip_list = config_info.sections()
print("ip list>>", ip_list)
group_dic.update({group: ip_list})
print(group)
print("group dict", group_dic)
输出结果
['111', '33']
ip list>> ['192.168.1.1']
111
group dict {'111': ['192.168.1.1']}
ip list>> ['192.168.1.1', '192.168.229.128', '192.168.229.131']
33
group dict {'111': ['192.168.1.1'], '33': ['192.168.1.1', '192.168.229.128', '192.168.229.131']}
Process finished with exit code 0
两个配置文件
33
[192.168.229.128]
user = jason
pwd = 123
ports = 22
[192.168.229.131]
user = jason
pwd = 123
ports = 33
111
[192.168.1.1]
user = dog
pwd = 123
ports = 88
补充:
在config.read("file_path"),前加config.clear()即可解决上述问题
configpraser模块的更多相关文章
- python中configpraser模块
configparser 模块 解析配置文件模块 什么是配置文件? 用于编写程序的配置信息的文件 什么是配置信息? 为了提高程序的扩展性 #configparser模块的使用 #首先我们需要知道配 ...
- Python模块之configpraser
Python模块之configpraser 一. configpraser简介 用于处理特定格式的文件,其本质还是利用open来操作文件. 配置文件的格式: 使用"[]"内包含 ...
- npm 私有模块的管理使用
你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- ES6模块import细节
写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...
- Python标准模块--ContextManager
1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...
- Python标准模块--Unicode
1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...
- Python标准模块--Iterators和Generators
1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...
- 自己实现一个javascript事件模块
nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...
随机推荐
- Django中添加富文本编辑器
使用的是CKeditor这个模块 1.安装: pip install django-ckeditor 2.将ckeditor注册到settings.py文件中, 并添加ckeditor的url到你项目 ...
- C# TextBlock 上标
我需要做一个函数,显示 ,但是看起来用 TextBlock 做的不好看. 我用 WPF 写的上标看起来不好看,但是最后有了一个简单方法让他好看. 本文告诉大家如何做一个好看的上标. 一开始做的方法: ...
- win10 uwp 应用转后台清理内存
我在写小说阅读器,把每个打开的文件的内容读到内存,因为小说都很小,所以放在内存不怕太大,但是我如果打开了一本小说,再打开一本,我不会把先打开的小说的内容清除掉,在内存.所以一旦我打开多小说的时候,内存 ...
- JavaScript对象之关联数组
Tip: 内容摘抄自<JavaScript权威指南>,看过该书的同学可以忽略本文. 存取一个对象的属性的方式: obj.attr; obj["attr"]; 两者最重要 ...
- JavaScript中的数值转换
在JavaScript中,有3个函数可以把非数值转换为数值 1.Number()函数 Number()可以用于任意数据类型. 转换规则如下. 如果是Boolean值,true和false将分别被转换为 ...
- 【转】认识物理I/O构件- 主机I/O总线
在数据离开系统内存总线后,它通常传输到另一条总线,即主机I/O总线.在今天的产品中,最常见的主机I/O总线是PCI总线,但也存在着几种其他的总线,如S -总线,EIS A总线及VME总线.主机I/O总 ...
- USACO奶牛博览会(DP)
Description 奶牛想证明他们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N头奶牛进行了面试,确定了每头奶牛的智商和情商. 贝西有权选择让哪些奶牛参加展览.由于负的智商或情商会造成 ...
- Tomcat 笔记-配置域名
编辑/etc/hosts文件,添加域名: 127.0.0.1 localhost 127.0.1.1 ubuntu # The following lines are desirable for IP ...
- 想要写出高性能sql语句,你得记住这些……
1.在from子句中包含多个表名时,必须选择记录条数最少的表作为基础表:若有三个以上的表连接查询,那就需要选择交叉表作为基础表,交叉表指被其他表引用的表. 2.使用exists代替in.使用not e ...
- 【ASP.NET MVC 学习笔记】- 01 理解MVC模式
本文参考:http://www.cnblogs.com/willick/p/3195560.html 1.MVC模式是软件系统的一种架构模式,它将软件分为三大模块: 模型(Model):封装业务逻辑以 ...