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. 【NOIP2012】提高组初赛试题(个人错题解析+相关知识点扩展)C++版

    初赛14号就要开始了,从今天到14号还有三天,已经请了两节的自习来刷题,每天三四套题,尽量把01年到16年的题目全刷一遍.[fighting!!!] 4.无论是TCP/IP模型还是OSI模型,都可以视 ...

  2. 第七章 DAO模式

    第七章 DAO模式 一.JDBC的封装 1.JDBC的封装: DAO位于业务逻辑和持久化数据之间,实现对持久化数据的访问.将数据库都封装起来,对外提供相应的接口 2.DAO模式的作用: 1.隔离业务逻 ...

  3. 前端魔法堂——异常不仅仅是try/catch

    前言  编程时我们往往拿到的是业务流程正确的业务说明文档或规范,但实际开发中却布满荆棘和例外情况,而这些例外中包含业务用例的例外,也包含技术上的例外.对于业务用例的例外我们别无它法,必须要求实施人员与 ...

  4. 张高兴的 Windows 10 IoT 开发笔记:RTC 时钟模块 DS3231

    GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/DS3231 注意:不包含闹钟设置

  5. 【转】scatterlist && DMA

    原文:scatterlist && DMA DMA是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制.使用DMA可以是系统CPU从实际的IO数据传输过程中摆脱出 ...

  6. HTML笔记<note1>

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. Cocos 2d-X Lua 游戏添加苹果内购(一) 图文详解准备流程

    事前准备 最近给游戏添加了苹果的内购,这一块的东西也是刚刚做完,总结一下,其实这里不管是游戏还是我们普通的App添加内购这一块的东西都是差不多的,多出来的部分就是我们Lua和OC的交互的部分,以前刚开 ...

  8. 高性能 Java 缓存库 — Caffeine

    http://www.baeldung.com/java-caching-caffeine 作者:baeldung 译者:oopsguy.com 1.介绍 在本文中,我们来看看 Caffeine - ...

  9. 28款GitHub最流行的开源机器学习项目

    现在机器学习逐渐成为行业热门,经过二十几年的发展,机器学习目前也有了十分广泛的应用,如:数据挖掘.计算机视觉.自然语言处理.生物特征识别.搜索引擎.医学诊断.DNA序列测序.语音和手写识别.战略游戏和 ...

  10. 分布式数据库TiDB的部署

    转自:https://my.oschina.net/Kenyon/blog/908370 一.环境 CentOS Linux release 7.3.1611 (Core)172.26.11.91   ...