文章目录

  • logging模块
  • configparser模块
  • hashlib模块

我们在很多情况下,程序的运行都需要做日志或者某些记录,这就需要用到logging模块来自动记录;同样的,配置文件也是程序运行时做记录的,但它记录的是相关配置

logging模块

  1. logging.basicConfig方式
import logging#修改日志参数,注意:每个参数之间用,分割开
logging.basicConfig(level = logging.DEBUG,  #level参数,设置级别filename = "logger.log",  #filename参数,将内容写入logger.log日志文件filemode = 'w',  #修改模式为只写,默认模式为追加format = "%(asctime)s %(filename)s[%(lineno)d]  %(message)s"#输出自定义的格式内容,分别是时间、执行文件名、日志在代码内的行号、日志信息
)#几个longging方法,参数内容可以自己设置
logging.debug('debug message')  #执行信息
logging.info('info message')  #普通信息记录(最常用)
logging.warning('warning message')  #警告信息
logging.error('error message')  #错误信息
logging.critical('critical message')  #逻辑问题

运行结果:

  1. Logger对象的方式
import loggingdef logger_get():#创建对象logger = logging.getLogger()  #创建一个Logging对象fh = logging.FileHandler('log_test.log')  #创建向文件发送日志的对象ch = logging.StreamHandler()  #创建向屏幕端发送日志的对象fm = logging.Formatter("%(asctime)s  %(message)s")  #修改日志的格式#调用对象fh.setFormatter(fm)  #将对象fh和ch的日志格式设置为fm样式ch.setFormatter(fm)logger.setLevel('DEBUG')  #设置级别为DEBUGlogger.addHandler(fh)logger.addHandler(ch)return logger  #返回一个logger对象logger = logger_get()#打印信息(执行调用对象)
logger.debug('hello python')
logger.info('this is from info')
logger.warning('this warning')
logger.error('this is error')
logger.critical('this critical')

运行结果:

注意:

  • 如果默认的日志级别设成INFO,那么低于INFO的日志将不会被写,比如DEBUG信息不会被写入
  • 如果这个日志不再被用了,需要remove掉其handler,否则它会常驻内存,引起混乱

configparser模块

用来配置文件的模块;
配置文件:文件对分为一块一块的内容,每一块都是由多个键值对来组成

  1. 创建配置文件:
import configparser#创建一个configparser对象,相当于有了一个空字典
con_fig = configparser.ConfigParser()#定义要写入的内容,此处为创建一个"DEFAULT"块
con_fig["DEFAULT"] = {'ServerAliveInterval': '45',  #参数间用逗号隔开'Compression': 'yes','CompressionLevel': '9'}#添加其他的块,并定义写入的内容
con_fig['bitbucket.org'] = {}  #定义一个新块['bitbucket.org'],在新块内再定义一块['User']的键值对
con_fig['bitbucket.org']['User'] = 'hg'con_fig['topsecret.server.com'] = {}  #再定义一个新块
topsecret = con_fig['topsecret.server.com']  #用一个变量topsecret接收这个新块
topsecret['Host Port'] = '50022'
topsecret['ForwardX11'] = 'no' con_fig['DEFAULT']['ForwardX11'] = 'yes'  #在['DEFAULT']块下又定义块键值对#写入到配置文件中
with open('con_fig_file.ini', 'w') as f:con_fig.write(f)  #把con_fig对象写入到f所指的文件中

运行结果:

  1. 查询配置文件(和字典的操作类似):
import configparser#配置文件内容的查询,要先获取文件
config = configparser.ConfigParser()  #建立一个configparser对象
config.read('con_fig_file.ini')  #用对象来直接读取文件#打印除了DEFAULT外的块名,['bitbucket.org', 'topsecret.server.com']
print(config.sections())
#用in来判断是否存在'bytebong.com'块,返回布尔值
print('bytebong.com' in config)#类似字典一样,一层一层访问key下的值
print(config['topsecret.server.com']['ForwardX11'])#用for转可迭代对象后遍历配置文件中的所有value,传入参数为'bitbucket.org'
for value in config['bitbucket.org']:print(value)#option取所有的键,参数为'bitbucket.org'
print(config.options('bitbucket.org'))
#items取所有键值对,参数为'bitbucket.org'
print(config.items('bitbucket.org'))
#取'bitbucket.org'块中的'compression'这个键对应的值
print(config.get('bitbucket.org','compression'))

运行结果:

  1. 配置文件的增、改、删:
import configparser#创建对象并读取文件内容
config = configparser.ConfigParser()
config.read('con_fig_file.ini')  #用对象来直接读取文件#增、删、改
config.add_section('NewBlock')  #指定要添加进文件的内容,这里是增加一个块'NewBlock'
config.set('bitbucket.org','7k7k','4399')  #给配置文件的块加入value(值)
#第一个参数为块名,后面两个参数为键值对config.remove_section('topsecret.server.com')  #删除块
config.remove_option('bitbucket.org','user')  #删除键值对#执行写入操作(增、改、删都是写入),写入到new_i文件
config.write(open('new_i.cfg', "w"))  #配置文件后缀为ini何cfg都可以

运行结果:

hashlib模块

hashlib是用于加密操作的,3.x里代替了md5模块和sha模块,主要提供了SHA1, SHA224, SHA256, SHA384, SHA512,MD5 等算法;但是hashlib加密是单向的,只能加密不能解密

import hashlibobj = hashlib.md5()  #建立一个用md5加密的对象obj
obj.update('hello'.encode('utf-8'))
#将字符串加密,updata参数必须是字节类型,所以encode编码一下
#因为加密算法、加密后位数是固定的,所以每一个加密对象与结果加密结果都是唯一对应的#带参数的加密方式,有了参数之后别人就算用md5解密工具也解不了,因为参数你自定义的
upobj = hashlib.md5('world'.encode('utf8'))
upobj.update('hello'.encode('utf-8'))#256加密(更复杂,但时间效率也更低)
obj_256 = hashlib.sha256()
obj_256.update('shine'.encode('utf-8'))#输出加密后的内容
print(obj.hexdigest())
print(upobj.hexdigest())
print(obj_256.hexdigest())

运行结果:

初学者python笔记(hashlib加密、logging日志模块、configparser配置文件)相关推荐

  1. hashlib摘要算法模块,logging日志,configparser配置文件模块

    一.hashlib模块(摘要算法模块) 1.算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢? 摘要算法又称哈希算法.散列算法.它通过一个函数,把 ...

  2. python写日志文件_Python logging日志模块 配置文件方式

    在一些微服务或web服务中我们难免需要日志功能,用来记录一些用户的登录记录,操作记录,以及一些程序的崩溃定位,执行访问定位等等; Python内置 非常强大的日志模块 ==> logging 今 ...

  3. python logging日志分割_python logging日志模块以及多进程日志

    本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python ...

  4. python中logging模块详解_python logging日志模块详解

    logging 日志模块详解 用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这 ...

  5. python logging日志模块以及多进程日志

    本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 原出处博客 1. logging日志模块介绍 ...

  6. python log文件如何不写入syslog_python 自动化之路 logging日志模块

    logging 日志模块 http://python.usyiyi.cn/python_278/library/logging.html 中文官方 http://blog.csdn.net/zyz51 ...

  7. 包,logging日志模块,copy深浅拷贝

    一 包 package 包就是一个包含了 __init__.py文件的文件夹 包是模块的一种表现形式,包即模块 首次导入包: 先创建一个执行文件的名称空间 1.创建包下面的__init__.py文件的 ...

  8. 初学者python笔记(类的继承与多态---详解)

    文章目录 一.类的组合与继承的区别 二.类的继承 1.继承的功能分析 2.类的继承之派生.接口继承 3.用接口模块abc来实现接口继承 4.使用接口继承的好处 5.类的继承顺序 6.在子类中调用父类的 ...

  9. 初学者python笔记(map()函数、reduce()函数、filter()函数、匿名函数)

    文章目录 一.匿名函数 二.map()函数 三.reduce()函数 四.filter()函数 五.三大函数总结 本篇文章内容有Python中的匿名函数和map()函数.reduce()函数.filt ...

  10. Python接口自动化之logging日志

    VOL 122 11 2020-05 今天距2021年234天 这是ITester软件测试小栈第122次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

最新文章

  1. 用Kotlin写Android Gradle脚本
  2. 学习《Hardware-Efficient Bilateral Filtering for Stereo Matching》一文笔记。
  3. 如何多快好省的建设企业级呼叫中心(一)
  4. 15-description-Objective-C笔记
  5. 第 36 章 RRDTool
  6. Android Studio调试时遇见Install Repository and sync project的问题
  7. 《Reids 设计与实现》第二章 字典
  8. 男人在最穷、最落魄,事业低谷期的时候最需要的是什么?
  9. mysql 基于 ssl 的主从复制
  10. 疯狂java讲义第二章课后习题答案
  11. NLP专题:LSA浅层语义分析
  12. 动态规划——最小找钱问题
  13. 腾讯会议html代码,电脑端使用腾讯会议的加入会议步骤
  14. 数据结构和算法(32)之背包问题
  15. cad断点快捷键_CAD打断和打断于点怎么使用?CAD打断快捷键命令及操作方法
  16. 数据分析(python系)
  17. 电脑桌面点击计算机反应迟钝,win7系统点击桌面图标反映迟钝影响整体运行速度怎么办【图文】...
  18. 微信小程序开发之倒计时定时器
  19. 爬虫腾讯地图-5WNBZ-2JYR6-SPUSL-M3WGH-U4KDT-K2FYV
  20. 矩阵向右旋转90° — C语言

热门文章

  1. docker run后台启动命令_Docker命令-docker run
  2. 管理系统页面脚手架(一)
  3. java对象名不可以是_java运行一个方法时如何得到该个对象的名字(不是类的名字)....
  4. Jdk8之Lambda表达式
  5. php-fpm 进程数和 cpu,关于PHP的 PHP-FPM进程CPU 100%的分析和解决
  6. html 文本 多列显示,CSS3文本,字体和多列
  7. 通讯录小程序android,通讯录小程序,找回青春的回忆
  8. 同频切换的事件_LTE前台路测切换问题处理大礼包
  9. linux中用户 机器名,Python 在linux下获得当前工作目录,主机名,用户名,操作系统平台等信息...
  10. 为什么php不能用了,为什么php不能做大型系统?