configparser 模块:

这是一个写入的模块就是把你的信息给写入的模块

#这是一个把信息写入example文件内
import configparser
config = configparser.ConfigParser()
config['DEFAULT'] = {'a':45, # 默认的语句
'Comparseeion':'yes',
'CompressionLevel':'9',
'ForwarXll':'yes'
}
config['bitbucjet.org'] = {'User':'hg'} #建立一个节 后面的表示这个节的内容
config['c'] = {'123':4}
with open ('example.ini','w')as f:
config.write(f)
import configparser
config = configparser.ConfigParser()
config.read('example.ini')
print(config.sections()) # sections是读取你所有的节的名字
print('bitbucket.org'in config) # 验证这个节点的名字是不是在这这个文件中

下面是练习精讲

# import configparser
# config = configparser.ConfigParser()
# config["DEFAULT"] = {'a': '45',
# 'Compression': 'yes',
# 'CompressionLevel': '9',
# 'ForwardX11':'yes'
# }
#
# config['bitbucket.org'] = {'User':'hg'}
# config['topsecret.server.com'] = {'Host Port':'50022','ForwardX11':'no'}
# with open('example.ini', 'w') as f:
# config.write(f) # import configparser
# config = configparser.ConfigParser()
# config.read('example.ini')
# print(config.sections()) # 查看所有的节 但是默认不显示DEFAULT []
# print('bitbucket.org' in config) # True 验证某个节是否在文件中
# print('bytebong.com' in config) # False
# print(config['bitbucket.org']["user"]) # hg 查看某节下面的某个配置项的值
# print(config['DEFAULT']['Compression']) #yes
# print(config['topsecret.server.com']['ForwardX11']) #no
# print(config['bitbucket.org']) #<Section: bitbucket.org>
# for key in config['bitbucket.org']: # 注意,有default会默认default的键
# print(key)
# print(config.options('bitbucket.org')) # 同for循环,找到'bitbucket.org'下所有键
# print(config.items('bitbucket.org')) #找到'bitbucket.org'下所有键值对
# print(config.get('bitbucket.org','compression')) # yes get方法Section下的key对应的value # import configparser
#
# config = configparser.ConfigParser()
# config.read('example.ini')
# config.add_section('yuan')
# config.remove_section('bitbucket.org')
# config.remove_option('topsecret.server.com',"forwardx11")
# config.set('topsecret.server.com','k1','11111')
# config.set('yuan','k2','22222')
# config.write(open('new2.ini', "w")) # section 可以直接操作它的对象来获取所有的节信息
# option 可以通过找到的节来查看多有的项

logging模块:

可以通过一个参数去控制全局的日志输出情况
可以帮助开发者同时向文件屏幕输出信息

你也可以print来显示你所要显示的信息 但是logger可以控制你的显示的 信息 如果你是print的话那么你就会要一个一个删除或者添加 如过你不想显示的话那么就可以控制setLevel来控制你的输出显示

logging不会自动帮你打印 需要你自己手动打印

loggin可以设置简单模式和复杂模式 复杂模式的就是logger的

有复杂模式 getlogger  和简单模式basicConfig


logging模式不能同时输出到文件和屏幕而logger模式可以

这是logging的模式

import logging
logging.basicConfig(level = logging.DEBUG,
format = '%(asctime)s %(filename)s [line:%(lineno)d]%(levelname)s %(message)s'
) #这个是必须这样写的 默认模块 #这个level后面是可以更改它的显示的
logging.debug('debug message') #调式模式级别最低
logging.info('infomessage') # info显示正常信息
logging.warning('warning message') # waring 显示警告信息
logging.error('error message') # error 显示错误信息
logging.critical('critical message')# critical 显示严重错误信息 下面设置更改错误显示 只需要修改level就可以了
logging.basicConfig(level = logging.ERROR,
format = '%(asctime)s %(filename)s [line:%(lineno)d]%(levelname)s %(message)s'
) #我设置从error开始报错
logging.debug('debug message') #调式模式级别最低
logging.info('infomessage') # info显示正常信息
logging.warning('warning message') # waring 显示警告信息
logging.error('error message') # error 显示错误信息
logging.critical('critical message')# critical 显示严重错误信息
 


下面是复杂模式就是实例化logger  实例logging的对象
import logging
logger = logging.getLogger() #实例化一个logger对象
fh = logging.FileHandler('tset.log', encoding = 'utf-8') #就是默认创建一个文件句柄 然后这个文件的格式 默认就是追加'a' sh = logging.StreamHandler() #对当前屏幕的信息进行操作 fmt = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(fmt) # 格式和文件句柄或者屏幕句柄关联 就是让格式化和文件关联
sh.setFormatter(fmt) #让你的格式化输出和屏幕相关联
# 上面是默认显示的的 一般的显示错误信息都是从error开始的 你也可以用setLevel来让它的输出显示改变
#
# 比如想从warring开始显示错误信息就:
# sh.setLevel(logging.WARNING) # 这个是让你的显示错误信息从warning开始
sh.setLevel(logging.ERROR) # setLevel是可以设置你的错误的信息的 你也可以直接用实例的对象直接调用setLevel那样打印的就是全部的错误信息 # 吸星大法就是让你的信息互相关联
logger.addHandler(fh) # 和 logger的句柄关联
logger.addHandler(sh) #把你的上面的屏幕和logger对象关联
logger.setLevel(logging.DEBUG) #更改logger的错误显示
logger.debug('debug message') # debug 调试模式 级别最低
logger.info('info message') # info 显示正常信息
logger.warning('warning message') # warning 显示警告信息
logger.error('error message') # error 显示错误信息
logger.critical('critical message')


sh.setLevel(logging.WARNING)  # 这个是让你的显示错误信息从warning开始
setLevel是可以设置你的错误的信息的 你也可以直接用实例的对象直接调用setLevel那样打印的就是全部的错误信息

上面是默认显示的的 一般的显示错误信息都是从error开始的 你也可以用setLevel来让它的输出显示改变

比如想从warring开始显示错误信息就:更改logger的setLevel

# 吸星大法就是让你的信息互相关联
# 吸星大法就是让你的信息互相关联
logger.addHandler(fh) # 和 logger的句柄关联
logger.addHandler(sh) #把你的上面的屏幕和logger对象关联
logging
logging 是记录日志的模块
它不能自己打印内容 只能根据程序员写的代码来完成功能
logging模块提供5中日志级别,从低到高一次:debug info warning error critical
默认从warning模式开始显示
只显示一些基础信息,我们还可以对显示的格式做一些配置 简单配置 配置格式 basicCondfig
问题:编码问题,不能同时输出到文件和屏幕 logger对象配置
高可定制化
首先创造logger对象
创造文件句柄 屏幕句柄
创造格式
使用文件句柄和屏幕句柄 绑定格式
logger对象和句柄关联
logger.setLevel
使用的时候 logger.debug

collections 模块:

在基础数据类型之外又增加了一些数据类型

from collections import namedtuple
Point = namedtuple('Point',['x','y'])
p = Point(1,2)
p = Point(1,2)
print(p)
print(p.x)
print(p.y) from collections import deque
双端队列
dq = deque()
dq.append(1)
dq.append(2)
dq.append(3)
print(dq)
print(dq.pop())
print(dq.popleft())
dq.appendleft(4)
dq.appendleft(5)
print(dq) import queue
# 队列 先进先出 fifo
# 计算机数据结构模型
# 先进先出 # 栈 先进后出
# 计算机数据结构模型
# 先进先出 # dic = {'k1':'v1','k2':'v1','k3':'v1','k4':'v1'}
# keys = list(dic.keys())
# print(keys)
# for k in keys:
# print(k,dic[k]) from collections import OrderedDict
# dic = dict([('k1','v1'),('k2','v2')])
# print(dic) dic = OrderedDict([('k1','v1'),('k2','v2')])
print(dic)

configparser logging collections 模块的更多相关文章

  1. python 全栈开发,Day26(hashlib文件一致性,configparser,logging,collections模块,deque,OrderedDict)

    一.hashlib文件一致性校验 为何要进行文件一致性校验? 为了确保你得到的文件是正确的版本,而没有被注入病毒和木马程序.例如我们经常在网上下载软件,而这些软件已经被注入了一些广告和病毒等,如果不进 ...

  2. 序列化 ,hashlib ,configparser ,logging ,collections模块

    # 实例化 归一化 初始化 序列化 # 列表 元组 字符串# 字符串# .......得到一个字符串的结果 过程就叫序列化# 字典 / 列表 / 数字 /对象 -序列化->字符串# 为什么要序列 ...

  3. 常用模块(collections模块,时间模块,random模块,os模块,sys模块,序列化模块,re模块,hashlib模块,configparser模块,logging模块)

    认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的 ...

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

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

  5. 4-23 模块 hashlib ,configparser,loging,collections

    1,hashlib模块的补充(摘要算法) 1,Sha1的用法和md5的类似,通常用一个40位的16进制字符串表示.比SHA1更安全的算法是SHA256和SHA512,不过越安全的算法越慢,而且摘要长度 ...

  6. collections模块---(namedtuple、deque、OrderdDict、defaultdict、Counter)和configparser模块

    在内置数据类型(dict. list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter. deque.defaultdict.namedtuple 和 ...

  7. 常用模块(hashlib,configparser,logging)

    常用模块(hashlib,configparser,logging) hashlib hashlib 摘要算法的模块md5 sha1 sha256 sha512摘要的过程 不可逆能做的事:文件的一致性 ...

  8. logging、hashlib、collections模块

    一.hashlib模块(加密模块) 1.什么叫hash:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 , ...

  9. 0424 collections模块、time模块、rondom模块、sys模块

    昨日回顾:hashlib 摘要 md5 sha系列 文件的一致性校验 密文的认证 logging 记录日志 两种用法 basicConfig不常用 getLogger()常用 可以通过一个参数去控制全 ...

随机推荐

  1. echart 时间轴、以及y轴值过大但是变化不大显示感觉不出变化的问题+弹出框拖动div事件

    1.时间轴 echart 提供了一种图表,如果x轴是一个时间范围,并且是连续的,如果用传统的数据驱动会很慢,所以用时间轴的方式 function initCurve(_data){ var resul ...

  2. python爬虫的教程

    来源:http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一 ...

  3. 解决SSH连接linux时长时间不操作自动断开

    最近重装Linux系统,但是这次ssh连接云服务区Linux系统时,经常出现一段时间不操作,连接自动中断,表现为光标还在闪动,但是却无法操作.只好关闭终端,重新连接,很是麻烦. 为此,通过网络查找,找 ...

  4. CentOS/Linux 解决 SSH 连接慢

    现在连接linux服务器一般都是使用SSH远程连接的方式.最近新装了一台服务器,发现telnet时速度很快,ping时一切也正常,但SSH连接的时候却很慢.经过网上资料查询,大致是有以下几种原因: 1 ...

  5. FocusBI:《DW/BI项目管理》之SSIS执行情况

    微信公众号:FocusBI关注可了解更多的商业智能.数据仓库.数据库开发.爬虫知识及沪深股市数据推送.问题或建议,请关注公众号发送消息留言;如果你觉得FocusBI对你有帮助,欢迎转发朋友圈或在文章末 ...

  6. Python制作回合制手游外挂简单教程(中)

    接着上篇的博文,今天我们讲如何实现自动组队刷道 引入: 自动组队刷道的流程是先点击刷道按钮.再点击前往按钮.再点击便捷组队······ 这些操作上篇博文已经告诉我们怎么做了,利用picpick丈量坐标 ...

  7. unity多线程

    多线程概念 多线程,是指实现多个线程并发执行的技术,合理利用多线程可以提升程序的性能,在unity中,一般是避免使用多线程的,unity对多线程的支持并不友好. 协程概念 协程,是指在主线程运行时开启 ...

  8. jQuery几个易混淆之处(参考《众妙之门》及相关博客)

    parent() && parents() && closest() 这三个方法都与沿着DOM向上导航有关,在由选择器返回的元素上方,匹配父元素或之前的祖先元素,但是每 ...

  9. 十五、读写锁ReentrantReadWriteLock

    一.简介 有时候我们对资源的修改操作非常地少,但是读取的频率却很高.如果采用一般的互斥锁,那么大量的读取操作也需要做等待.基于读写分离的思想,我们可以使用JDK的读写锁来处理这种情况. 1)读读不互斥 ...

  10. java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media/20 from pid=711, uid=10074 requires android.permission.READ_

    java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider ur ...