day-21-模块补充shutil,logging
2021/5/2 18:29:13
本文主要是介绍day-21-模块补充shutil,logging,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、shutil:文件目录相关的模块
-
拷贝文件:copy2
import shutil shutil.copy2('原文件', '现文件')
-
拷贝目录:copytree
import shutil # 拷贝目录并且不要原目录里面所有py结尾和txt结尾的文件(默认可以不写) shutil.copytree('原目录', '新目录', ignore=shutil.ignore_patterns('*.py', '*.txt'))
-
删除目录:rmtree
import shutil # 删除目录,且不管这个目录是否在使用中,强制删除,(默认为False不强制删除) shutil.rmtree('目录', ignore_errors=True)
-
移动文件或目录:move
import shutil # 也可移动并改名(默认在相对目录下) shutil.move('文件', '新目录\新文件.txt')
-
获取磁盘的使用空间:disk_usage
import shutil # '.'点为当前磁盘,可以改成'D\\'盘 total, used, free = shutil.disk_usage('.') # 因为获取到的是kb,所以要除以1024的3次方还能获取到GB print(f'当前磁盘工:{int(total/1073741824)}GB,已使用:{int(used/1073741824)}GB,剩余:{int(free/1073741824)}GB') # 输出 当前磁盘工:100GB,已使用:65GB,剩余:34GB
-
压缩文件:make_archive
impoirt shutil shutil.make_archive('被压缩文件夹的名字', 'zip', '压缩后文件夹路径')
-
解压文件:unpack_archive
impoirt shutil shutil.unpack_archive('zip文件的路径.zip','解压到目的文件夹路径')
二、logging:日志模块
-
为什么要写log?
-
用来记录用户的行为——>数据分析
-
用来记录用户的行为——>操作审计
-
排查代码中的错误
-
-
输出内容是有等级的 : 默认处理warning级别以上的所有信息
import logging # 在写程序的时候要写,但是正常运行的过程中不执行,出现问题在重启打开调试模式,复现报错看日志 logging.debug('debug 信息') # 调试——默认不显示 logging.info('info 信息') # 信息——默认不显示 logging.warning('warning 信息') # 警告 logging.error('error 信息') # 错误 logging.critical('critical 信息') # 批判性(严重)的 # 输出 WARNING:root:warning 信息 ERROR:root:error 信息 CRITICAL:root:critical 信息
-
输出到屏幕
import logging logging.basicConfig( # format是设置输出格式 format='%(asctime)s - %(levelname)s[第%(lineno)d行]-%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S', # 设置时间格式 level=logging.DEBUG # 设置日志级别,最低显示信息从debug开始(默认从warning) ) logging.debug('debug 信息错误 ') logging.info('info 信息错误 ') logging.warning('warning 错误信息') logging.error('error 错误信息') logging.critical('critical 错误信息') # 输出 2021-04-27 21:29:06 - DEBUG[第78行]-6.logging模块: debug 错误信息 2021-04-27 21:29:06 - INFO[第79行]-6.logging模块: info 错误信息 2021-04-27 21:29:06 - WARNING[第80行]-6.logging模块: warning 错误信息 2021-04-27 21:29:06 - ERROR[第81行]-6.logging模块: error 错误信息 2021-04-27 21:29:06 - CRITICAL[第82行]-6.logging模块: critical 错误信息
-
输出到文件
import logging fh = logging.FileHandler('tmp.log', encoding='utf-8') # 创建一个文件处理程序 log_file = open('log.log', encoding='utf-8', mode='a') # 日志文件句柄 logging.basicConfig( format='%(asctime)s - %(levelname)s[第%(lineno)d行]-%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', stream=log_file, # 输出到文件句柄, handlers=[fh, ] # 或者用这个方法将文件处理程序添加进去(只能选一个) level=logging.DEBUG ) logging.debug('debug 信息错误 ') logging.info('warning 信息错误 ') logging.warning('warning 信息错误 ') logging.error('error 信息错误 ') logging.critical('critical 信息错误 ')
-
日志切割
import time import logging from logging import handlers sh = logging.StreamHandler() # 在控制台能看见报错信息 # 按照大小做切割,满了1024kb后就切割下一个文件,最多出现5个文件,超过之后会把最后的那个文件删除 rh = handlers.RotatingFileHandler('myapp.log', maxBytes=1024, backupCount=5) # 按照时间做切割,每个5秒切割一个文件 fh = handlers.TimedRotatingFileHandler(filename='time.log', when='s', interval=5, encoding='utf-8') logging.basicConfig( format='%(asctime)s - %(levelname)s[第%(lineno)d行]-%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', level=logging.DEBUG, handlers=[fh, rh, sh] # 将每个设置放入handlers中 ) for i in range(1, 100000): time.sleep(1) logging.error('错误信息 error %s' % str(i)) # 输出 2021-04-27 22:40:35 PM - ERROR[第177行]-6.logging模块: 错误信息 error 1 2021-04-27 22:40:36 PM - ERROR[第177行]-6.logging模块: 错误信息 error 2 2021-04-27 22:40:37 PM - ERROR[第177行]-6.logging模块: 错误信息 error 3 .... ....
-
logging.basicConfig:配置参数
logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有: filename:——用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。 filemode:——文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。 format:——指定handler使用的日志显示格式。 datefmt:——指定日期时间格式。 level:——设置rootlogger的日志级别 stream:——用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。 format参数中可能用到的格式化串: %(name)s ——Logger的名字 %(levelno)s ——数字形式的日志级别 %(levelname)s ——文本形式的日志级别 %(pathname)s ——调用日志输出函数的模块的完整路径名,可能没有 %(filename)s ——调用日志输出函数的模块的文件名 %(module)s ——调用日志输出函数的模块名 %(funcName)s ——调用日志输出函数的函数名 %(lineno)d ——调用日志输出函数的语句所在的代码行 %(created)f ——当前时间,用UNIX标准的表示时间的浮 点数表示 %(relativeCreated)d ——输出日志信息时的,自Logger创建以 来的毫秒数 %(asctime)s ——字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒 %(thread)d ——线程ID。可能没有 %(threadName)s ——线程名。可能没有 %(process)d ——进程ID。可能没有 %(message)s ——用户输出的消息
这篇关于day-21-模块补充shutil,logging的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25JAVA语音识别项目项目实战入门教程
- 2024-11-25JAVA云原生项目实战入门教程
- 2024-11-25Java语音识别项目入门:新手必读指南
- 2024-11-25Java语音识别项目入门:轻松开始你的第一个语音识别项目
- 2024-11-25Java语音识别项目入门详解
- 2024-11-25Java语音识别项目教程:从零开始的详细指南
- 2024-11-25JAVA语音识别项目教程:初学者指南
- 2024-11-25Java语音识别项目教程:初学者指南
- 2024-11-25JAVA云原生入门:新手指南与基础教程
- 2024-11-25Java云原生入门:从零开始的全面指南