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模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...
随机推荐
- 实验:实现https
实现https 环境 1.三台主机分别为A,B,C. 2.A主机设置为CA和DNS服务器,ip为192.168.213.129 3.B主机为client,ip为192.168.213.253 4.C主 ...
- 【学习】js学习笔记:内置顶层函数eval()的兼容用法
今天学了一个内置顶层函数,eval();其作用是将字符串转换成javascript命令执行,但必须符合语法,否则会报错. 如果写成window.eval(),则其定义的变量会在全局生效. 但是,在IE ...
- 知识树杂谈Android面试(3)
一.Activity生命周期? a. Activity四种状态? Running.Paused(透明无焦点).Stopped.killed. b. OnStart() OnRusume区分? 是否可以 ...
- JavaScript命令模式
第一,命令模式: (1)用于消除调用者和接收者之间直接的耦合的模式,并且可以对(调用这个过程进行留痕操作) (2)真的不要乱用这个模式,以为他使你简单调用写法变得非常的复杂和有些难以理解. (3)你的 ...
- JDBC工具类实例
本文以讲解用单利模式实现一个简单的JDBC实用工具类JDBC连接的四个基本步骤:1.加载相应数据库驱动2.建立相应数据库连接3.构建Statement语句,即增删改查SQL语句4.执行Statemen ...
- Spring源码情操陶冶-AOP之ConfigBeanDefinitionParser解析器
aop-Aspect Oriented Programming,面向切面编程.根据百度百科的解释,其通过预编译方式和运行期动态代理实现程序功能的一种技术.主要目的是为了程序间的解耦,常用于日志记录.事 ...
- java web 入门级 开发 常用页面调试方法
这里介绍一下Java web 入门级开发中常用的代码调式方法; ( 仅供入门级童靴 参考) ; 工具: chrome 浏览器 (版本越高越好); Java web 入门级开发 主要就是两个方面: ...
- JAVA提高九:集合体系
在经过了前面的JDK6.0新特性的学习后,将进一步深入学习JDK,因为集合的重要性,因此从集合开始入手分析: 一.集合概况 Java是一种面向对象语言,如果我们要针对多个对象进行操作,那么首先必要将多 ...
- Superset连接Impala数据源
公司最近在superset上面做二次开发,目前对接了mysql和oracle数据源,对这两个源的SQL操作查询做了完善和兼容.目前有新的需求就是要对接大数据部门的HBASE和HIVE数据源,由于sup ...
- 解决执行sql脚本报错:没有足够的内存继续执行程序。
出现执行sql脚本报错:没有足够的内存继续执行程序.是因为sql脚本过大,大家可能分为多个文件多次执行,这种笨方法可行,不过比较麻烦,大家可以用下面的方式,利用sqlcmd一次就行了: 执行cmd ...