一、配置文件简介

  在各种程序里面都有配置文件,为了对配置文件进行操作。 python中引入了configParse模块进行操作。

  配置数值类型:

    配置文件中,我们看到的bool型,整数型,在我们操作的时候,都是字符串类型。

  配置文件的三种定义:

      section:章节。 章节需要注意,大写的DEFAULT的基类,下面所有新增加的章节,都会继承这个,后面章节不写option都会继承这个章节的。

      option :选项,是每一个章节的定义。

      value:选项的值

二、配置文件模块的使用

2.1 初步认识使用方法

import configparser
import os
conf = configparser.ConfigParser() # 第一步:生成一个configParser对象,所有的操作都是根据这个对象来的, conf['DEFAULT'] = {}          # 第二步:先生产一个章节,必需先定义一个字典 (空字典,或 有值的字典 或 k,v的方式)
conf['DEFAULT']['base_dir'] = 'c:/Users/sothi/Desktop/py2018/02-auto/data'
conf['DEFAULT']['db_type'] = 'db'
conf['DEFAULT']['db_path'] = 'data.db'
conf['DEFAULT']['max_items'] = ''
conf['DEFAULT']['auto_save'] = 'True' conf['louhui'] = {}
conf['louhui']['auto_del'] = 'True'                      # 第三步:写入到文件中
base_dir = r'C:\Users\LH\Desktop\data'
path = os.path.join(base_dir, 'comeon.ini')
with open(path, 'w') as f:
conf.write(f) # 使用conf对象进行io

2.2 配置文件的读写

2.2.1 写入到配置文件

base_dir = r'C:\Users\LH\Desktop\data'
path = os.path.join(base_dir, 'comeon.ini')
with open(path, 'w') as f:
conf.write(f) # 使用conf对象进行io。 conf就是上面的对象

2.2.2 读取配置文件到内存中

base_dir = r'C:\Users\LH\Desktop\data'
path = os.path.join(base_dir, 'comeon.ini') # 读取配置文件
conf = configparser.ConfigParser() # 定义一个对象接收
conf.read(path)

三、各种方法大全

  配置文件的所有操作都是基于  configParse对象来操作。这点记住

3.1 增加

  增加有两种方法:使用字典的形式来操作  或 使用内置方法

# 1.用前面写的方式追加
conf['diaosinan'] = {}
conf['diaosinan']['auto_add'] = ''
with open(path, 'w') as f:
conf.write(f) # 2.使用add_section进行追加,使用set使用set进行各种修改
conf.add_section('diaosinan')
conf.set('diaosinan','auto_dellll', '') # set可以进行修改,也可以添加
conf.set('DEFAULT', 'auto_save', 'False') # 修改父类的val
print(conf['louhui']['auto_save']) # 子类直接改变

3.2 删除

  •   self.conf.remove_option()
  •        self.conf.remove_section()

def delete_option(self, section, option):
'删除指定的section下的option'
if self.conf.has_section(section) and self.conf.has_option(section, option):
self.conf.remove_option(section, option)
else:
print('section or option is wrong!')

3.3 修改

  直接使用3.1中的set可以进行修改。

3.4 查看

查看的各种方法

conf.has_section()      # 查看是否有该章节
conf.has_option() # 查看是否有该option conf.sections() # 返回所有的章节.默认的大写的DEFAULT是不返回的,DEFAULT是默认的基类,类似继承,下面所有的都会继承这个属性
conf.options(section) # 查看section下的所有章节 conf.items() # 打印所有的项目

配置文件中获取的val是字符串,进行类型转换

# 获取指定的值
result = conf['louhui']['auto_save'] # 定义louhui这个章节的时候,没有auto_save,但是我们能打印出来,继承了DEFAULT
print(result, type(result)) # 返回的默认就是字符串. 我们可以用两种方式 进行 转换
print(conf.options('louhui'))
# 方式1
bool(result) # 方式2
y = conf.getboolean('louhui','auto_save')
print(y, type(y))
## 或
louhui = conf['louhui'] # 定义一个变量名,存这个章节的对象
y = louhui.getboolean('auto_save')

s使用字典的方式进行操作

louhui = conf['louhui']
print(louhui['auto_save'])
print(louhui.get('auto_save'))

打印整个配置文件

# 打印整个配置文件
for k,v in conf.items():
print(f'{[k]}')
for key, val in conf.items(k):
print(key, val)
print('')

3.5 替换变量:

  替换变量:

import configparser,os
base_dir = r'C:\Users\LH\Desktop\data'
path = os.path.join(base_dir, 'louhui.lh')
# conf = configparser.ConfigParser()
conf = configparser.ConfigParser(interpolation=configparser.ExtendedInterpolation())
conf.read(path)
print(conf['de8ug']['db_path'])

四、自己封装的一个config类:

 import configparser,os

 class MyConf:
def __init__(self, path: str):
'初始化的时候读取配置文件'
self.path = path
self.conf = configparser.ConfigParser()
self.conf.read(self.path) # 空文件也不会出错 def add(self, section):
'增加一个章节'
if self.conf.has_section(section):
print('改章节已经存在')
else:
self.conf.add_section(section) def write(self, dic: dict):
'直接写入一个字典'
for k, v in dic.items():
self.conf[k] = v def del_section(self, section):
'删除section'
if self.conf.has_section(section):
self.conf.remove_section(section)
else:
print('该章节不存在') def modify_val(self, section, option, val):
if self.conf.has_section(section) and self.conf.has_option(section, option):
self.conf.set(section, option, val)
print('修改成功')
else:
print('修改失败') def delete_option(self, section, option):
'删除指定的section下的option'
if self.conf.has_section(section) and self.conf.has_option(section, option):
self.conf.remove_option(section, option)
else:
print('section or option is wrong!') def save(self):
'保存到配置文件中'
with open(self.path, 'w') as f:
self.conf.write(f) def check_all(self):
'答应全部'
for k, v in self.conf.items():
print(f'[{k}]')
for key, val in self.conf.items(k):
print(key, val)
self.conf.remove_option()
self.conf.remove_section() def test(self, li):
print(self.conf.options(li))
x = self.conf['louhui']
print(type(x)) def main():
data = {
'DEFAULT': {
'base_dir': 'c:/Users/sothi/Desktop/py2018/02-auto/data',
'db_type': 'db'
},
'de8ug': {
'base_dir': 'c:/Users/sothi/Desktop/py2018/02-auto/data',
'db_type': 'pkl'
}
} data.get('lh', False)
base_dir = r'C:\Users\LH\Desktop\data'
path = os.path.join(base_dir, 'comeon123.ini')
myconf = MyConf(path)
myconf.write(data) if __name__ == '__main__':
main()

封装的config

 

configParse模块的更多相关文章

  1. python configparse模块&xml模块

    configparse模块 用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser. [DEFAULT] serveraliveinterval = ...

  2. 【转】Python3 configparse模块(配置)

    [转]Python3 configparse模块(配置) ConfigParser模块在python中是用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(s ...

  3. python模块: hashlib模块, configparse模块, logging模块,collections模块

    一. hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用 ...

  4. 14 ConfigParse模块

    1.ConfigParse模块的基本概念 此模块用于生成和修改常见配置文档. ConfigParser 是用来读取配置文件的包. 配置文件的格式如下:中括号“[ ]”内包含的为section.sect ...

  5. 0423 hashlib模块、logging模块、configparse模块、collections模块

    一.hashlib模块补充 1,密文验证 import hashlib #引入模块 m =hashlib.md5() # 创建了一个md5算法的对象 m.update(b') print(m.hexd ...

  6. Python模块-configparse模块

    configparse模块用来解析配置文件 配置文件 [DEFAULT] port = 3306 socket = /tmp/mysql.sock [mysqldump] max_allowed_pa ...

  7. Python进阶-XVV hashlib模块、configparse模块、logging模块

    1.配置相关的configparse模块 配置文件如何组织?python中常见的是将配置文件写成py,然后引入该模块即可.优点是方便访问. 但是也有用类似windows中的ini文件的配置文件,了解即 ...

  8. python学习-58 configparse模块

    configparse模块 1.生成文件 import configparser # 配置解析模块 config = configparser.ConfigParser() # config = { ...

  9. python基础--xml和configparse模块

    1)XML模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多. 下面是xml的遍历查询删除修改和生成 # -*- coding:utf-8 -*- __author__ = 's ...

随机推荐

  1. spring mvc 全局处理异常

    spring框架支持很多种全局处理异常的方式 一.Spring MVC处理异常有4种方式: (1)使用Spring-MVC提供的SimpleMappingExceptionResolver: (2)实 ...

  2. react-native 解决Could not find method android() for arguments问题

    运行命令行:react-native run-android 报错 Error:(23, 0) Could not find method android() for arguments [****] ...

  3. pyinstaller 打包生成的exe文件,在其他电脑上报错

    解决方法: 1.第一种情况,在打包的时候不要加参数-w,看一下执行exe文件后出现的报错再看下一步的行动 2.应该是需要装一个VC 2015 x64(下载地址:https://www.microsof ...

  4. c++第三十一天

    p159~p164:switch语句1.例程:统计文本中五个元音字母出现的次数.(利用输入输出重定向测试) $ a <input.txt>output.txt #include <i ...

  5. Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation

    1.主要完成的任务是能够将英文转译为法文,使用了一个encoder-decoder模型,在encoder的RNN模型中是将序列转化为一个向量.在decoder中是将向量转化为输出序列,使用encode ...

  6. dependency的scope

    scope作用域,一共有三种作用域:compile(编译).runtime(运行).test(测试) 备注:打包必经compile阶段 1.test        测试 2.compile  编译 打 ...

  7. nginx和php之间是怎样通信的呢?

    FastCGI原理 FastCGI是一个运用于Http Server和动态脚本语言间通信的接口,多数流行的Http Server都支持FastCGI,包括Apache.Nginx和lighttpd等. ...

  8. Jclemo_ CTF_WEEK1~2学习总结

    Jclemo_ CTF_WEEK1~2学习总结 纯属因为感觉有趣,加入了ForDKYCTF小组学习,心得体会就不说了,总结一下最近的学习知识点(不全,参考我自己的940133658@qq.com的印象 ...

  9. Jquery8 基础事件

    学习要点: 1.绑定事件 2.简写事件 3.复合事件 JavaScript 有一个非常重要的功能,就是事件驱动.当页面完全加载后,用户通过鼠标或键盘触发页面中绑定事件的元素即可触发.jQuery 为开 ...

  10. [CF911F]Tree Destruction

    题意翻译 给你一棵树,每次挑选这棵树的两个叶子,加上他们之间的边数(距离),然后将其中一个点去掉,问你边数(距离)之和最大可以是多少. 首先我们知道,到一个点距离最远的点是直径的端点.考虑贪心,如果我 ...