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模块的更多相关文章

  1. python中configpraser模块

    configparser   模块 解析配置文件模块 什么是配置文件? 用于编写程序的配置信息的文件 什么是配置信息? 为了提高程序的扩展性 #configparser模块的使用 #首先我们需要知道配 ...

  2. Python模块之configpraser

    Python模块之configpraser   一. configpraser简介 用于处理特定格式的文件,其本质还是利用open来操作文件. 配置文件的格式: 使用"[]"内包含 ...

  3. npm 私有模块的管理使用

    你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...

  4. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  5. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  6. Python标准模块--ContextManager

    1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...

  7. Python标准模块--Unicode

    1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...

  8. Python标准模块--Iterators和Generators

    1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...

  9. 自己实现一个javascript事件模块

    nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...

随机推荐

  1. MS-DOS命令dir命令详细解析

    DOS命令窗口打开方式为Win+R键,打开运行命令,输入 cmd 即可:特殊情况我们要用管理员身份运行DOS,此时就可以在开始菜单-附件-DOS命令,鼠标右键单击命令提示符以管理员身份运行.如果是wi ...

  2. win10 UWP 发邮件

    UWP 下如何发邮件?可以使用mailto:xx?subject=*方式发送? 本文:如何在 UWP 使用默认邮件发邮件. 打开设置,应用,默认应用,选择应用 OutLook.这样就和我的一样,如果出 ...

  3. Ubuntu下使用网易云音乐

    Ubuntu15真心各种崩溃啊 最后决定还是换成ubuntu14.04LTS了 在win.android平台上网易云音乐好用到爆 ubuntu下没有网易云音乐的客户端怎么能行 https://gith ...

  4. hibernate利用mysql的自增张id属性实现自增长id和手动赋值id并存

    我们知道在mysql中如果设置了表id为自增长属性的话,insert语句中如果对id赋值(值没有被用到过)了,则插入的数据的id会为用户设置的值,并且该表的id的最大值会重新计算,以插入后表的id最大 ...

  5. 2年Java开发工作经验面试总结

    最近换了个公司,从三月底开始面,面到四月底,面了有快二十家公司.我是一个喜欢总结经验的人,每经过一场面试,我在回来的路上都会仔细回想今天哪些问题可以答的更好,或者哪些问题是自己之前没遇到过的,或者是哪 ...

  6. Tirp(状压DP)

    Description 有一个N*N的迷宫,其中有一些宝藏,现在,小A要从入口(1,1)出发,到达出口(N,N),每次,小A只能从当前的格子走到上下左右四个格子,为了不空手而归,小A决定要拿到所以的宝 ...

  7. 使用脚本监控windows服务的方法

    以下脚本可监控某一个windows服务,发现其停止就立即重启之. @echo off rem 定义循环间隔时间和监测的服务: set secs=60 set srvname="NetWin ...

  8. 队列(存储结构数组)--Java实现

    /*队列:其实也是一种操作受限的线性表 *特点:先进先出 *队尾指针:负责元素的进队 *队头指针:负责元素的出队 *注意:普通队--容易浪费空间,一般队列使用最多的就是循环队列--指针环绕 *队列的实 ...

  9. Yii2之事件

    众所周知,yii的三大特性是:属性.事件.行为,上一篇博文简单讲解了yii中的属性,本文接着讲讲yii的事件. 事件是代码解耦的一种方式,设计业务流程的一种模式.在yii2.0中,通过Yii\base ...

  10. spring mvc常用注解的说明

    最近一段时间学习了springboot,所以熟悉一下mvc中常用的注解,这样可以方便开发 简介: @RequestMapping RequestMapping是一个用来处理请求地址映射的注解,可用于类 ...