设为首页 加入收藏

TOP

Python自动化--语言基础7--操作日志、加密、发送邮件、线程、生产者消费者(一)
2017-12-23 06:07:16 】 浏览:624
Tags:Python 自动化 语言基础 7-- 操作 日志 加密 发送 邮件 线程 生产者 消费者
 
 

1、操作日志

 
 

logging.basicConfig:日志的统一处理器,对日志的输出格式和方式做配置
日志级别等级CRITICAL > ERROR > WARNING > INFO > EDBUG

 
 

level设定级别以及以上级别的才会打印,这里注意大小写!

 
 

打印日志信息在控制台或输出在一个文件示例:

 
 
 1 import logging
 2 import os 3 4 # log_file = os.path.join(os.getcwd(),'wlog.log') 5 log_format = "%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s" 6 ''' 7 如果不写filename和filemode参数则默认打印到console 8 ''' 9 logging.basicConfig(level=logging.WARNING,format=log_format) 10 # logging.basicConfig(level=logging.WARNING,format=log_format,filename=log_file,filemode='w') 11 12 logging.warning("waring message") 13 logging.error("error message")
 
 

输出在控制台信息如下:

 
 

2017-03-20 21:41:07,756 3.19.py [line:24] WARNING: waring message
2017-03-20 21:41:07,756 3.19.py [line:25] ERROR: error message

 
 

同时在控制台和输出到文件代码示例:

 
 
 1 # 创建一个logger
 2 logger = logging.getLogger("mylogger")
 3 logger.setLevel(logging.INFO) 4 5 # 创建一个handler,将log写入文件中 6 fh = logging.FileHandler('D:/pycharm workspace/practice/log.txt','a') 7 fh.setLevel(logging.INFO) 8 9 # 再创建一个handler,将log输出在控制台 10 ch = logging.StreamHandler() 11 ch.setLevel(logging.CRITICAL) 12 13 # 设置输出格式 14 log_format = "%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s" 15 formatter = logging.Formatter(log_format) 16 fh.setFormatter(formatter) 17 ch.setFormatter(formatter) 18 19 #把handler添加到logger里,其实可以理解为汇报给大领导 20 logger.addHandler(fh) 21 logger.addHandler(ch) 22 23 logger.error("今天天气阴")
 
 

控制台设置为CRITICAL不会有输出,因为打印的是error信息
输出到文件设置为INFO,打印的是error信息,会输出在文件中
如果设置成不一样的实际是没有任何意义。一般都设置为INFO。

 
 

另:

 
 

将执行脚本的日志保存在一个文件中

 
 
1     dirfile = os.listdir("D:\\")
2     for i in dirfile: 3 s=i.split('.')[1] 4 print(s) 5 if s == "py": 6 os.system("D:\\%s 1>>log.txt 2>&1" %i)
 
 

 

 
 

2、加密

 
 

#DES加密
# pyDes.des(key,[mode],[IV],[pad],[pdamode])
# 参数的意思分别如下:
# key:加密密钥,长度为8位。必选
# mode:加密方式。ECB(默认)、CBC(安全性好于前者)
# IV:初始字节数(长度为8位),如果选择的加密方式为CBC必须有这个参数。否则可以没有
# pad:加密时,将该字符添加到数据块的结尾;解密时,将删除从最后一个往前的8位
# padmode:PAD_NORMAL、PAD_PKCSS,当选择前者时必须设置pad

 
 

md5、sha、des加密代码示例:

 
 
 1 import hashlib     #md5 sha
 2 import base64      #des
 3 from pyDes import *
 4 
 5 def md5_encode(data):
 6     m = hashlib.md5() 7 m.update(data.encode('utf-8')) 8 return m.hexdigest() #经过特殊处理之后以字符串形式返回 9 10 def sha1_encode(data): 11 sha1 = hashlib.sha1() 12 sha1.update(data.encode('utf-8')) 13 return sha1.hexdigest() 14 15 def des_encode(data): 16 k = des("xqtest66",padmode=PAD_PKCS5) 17 # k = des('xqtest66',CBC,'goodluck',pad='hahahaha',padmode=PAD_NORMAL) 18 19 #encrypt来加密我的数据,然后进行base64编码 20 encodeStrr = base64.b64encode(k.encrypt(data)) 21 return encodeStrr 22 23 data = "wo" 24 print('md5加密结果:',md5_encode(data)) 25 print('sha加密结果:',sha1_encode(data)) 26 print('des加密结果:',des_encode(data))
 
 

3、发送邮件

 
 
 1 import smtplib
 2 import email.mime.multipart 3 import email.mime.text 4 5 from email.mime.application import MIMEApplication 6 7 class SendMail: 8 def send_mail(self,title): 9 msg = email.mime.multipart.MIMEMultipart() #生成包含多个邮件体的对象 10 msg['from'] = 'hanxxx@163.com' 11 msg['to'] = '80975@qq.com' 12 msg['subject'] = title 13 content = ''' 14 这是邮件的正文部分 15 ''' 16 17 #邮件正文 18 txt = email.mime.text.MIMEText(content) 19  msg.attach(txt) 20 21 #excel附件 22 # xlsxpart = MIMEApplication
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇python 内置函数 compile() 下一篇012函数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目