python21day
内容回顾
re模块的常用方法
- findall(正则,待匹配字符串,flag):返回所有匹配项的列表
- search:返回一个变量,通过group取到第一个匹配项
- match:从头开始找第一个,其他同search
- finditer:返回一个迭代器,通过迭代再group取到一个变量
- compile(正则)同一个正则表达式要多次使用,提前编译节约时间
- split:通过正则表达式匹配的内容进行分割
- sub:替换,通过正则表达式匹配的内容进行替换
- subn:替换,在sub基础上返回一个元组,第一项内容是替换结果,第二项是替换次数
标签匹配+身份证号匹配例子
分组命名 取消分组优先
- (?P<组名>正则)(?P=组名)(?:正则)
# 匹配年月日日期 格式2018-12-6
[1-9]\d{3}-(1[0-2]|0?[1-9])-[[12]\d|3[01]|0?[1-9]]
# 匹配邮箱地址
[-\w.]+@([-\da-zA-Z]+\.)+[a-zA-Z\d]{2,6}
今日内容
递归函数I
#递归问题,os模块:查看一个文件夹下所有文件,这个文件夹下面还有文件夹,不能用walk
#D:\Typora
import os
def show_file(path):
name_lst=os.listdir(path)
for name in name_lst:
abs_path=os.path.join(path,name)
if os.path.isfile(abs_path):
print(name)
elif os.path.isdir(abs_path):
show_file(abs_path)
show_file('D:\Typora')
#递归问题,计算斐波那契数列,找第100个数
#1 1 2 3 5
def fib(n,a=1,b=1):
if n==1 or n==2:
return b
else:
return fib(n-1,b,a+b)
ret=fib(100)
print(ret)
#递归问题,os模块:计算一个文件夹下所有文件的大小,这个文件夹下面还有文件夹,不能用walk
#D:\Typora
import os
def dir_size(path):
size=0
name_lst=os.listdir(path)
# print(name_lst)
for name in name_lst:
abs_path=os.path.join(path,name)
if os.path.isfile(abs_path):
size += os.path.getsize(abs_path)
else:
ret=dir_size(abs_path)
size += ret
return size ret=dir_size('D:\Typora')
print(ret)
shutil模块
- 拷贝文件:shutil.copy2(原文件,现文件)
- 拷贝目录:shutil.copytree(原目录,现目录,ignore=xx)
- 删除目录:shutil.rmtree(目录,ignore=xx)
- 移动文件/目录:shutil.move
- 获得磁盘的使用空间
- 压缩文件夹:shutil.make_archive(压缩文件名,格式,路径)
- 解压:shutil.unpack_archive(压缩文件)
logging模块
为什么要写log?
- log是为了排错
- log用来做数据分析
举例:购物商城
- 什么时间买了什么商品
- 把哪些商品加入了购物车
- 一个用户登录时间地点
- 搜索了什么
- 什么时候关闭了软件
- 上述等操作都存到了数据库
- 做数据分析的内容--记录到日志
如果学生管理系统被某人删了某些东西,日志都有
用来记录用户的行为 - 数据分析
用来记录用户的行为 - 操作审计
排查代码中的错误
import logging
#输出内容是有等级的:默认处理warnning级以上的信息
logging.debug('debug message') #调试
logging.info('info message') #信息
logging.warning('warning message') #警告
logging.error('error message') #错误
logging.critical('critical message') #批判性
#无论希望日志里打印哪些内容,都得自己写,没有自动生成日志的事儿
日志等级的设置
logging.basicconfig(format='',datefmt='')
import logging
logging.basicConfig(format='%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
)
logging.warning('warning message test2')
#输出到文件,并且设置信息等级,handlers=[放文件操作符]
import logging
fh=logging.FileHandler('tmp.log',encoding='utf-8')
sh=logging.StreamHandler()
logging.basicConfig(format='%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
level=logging.DEBUG,
handlers=[fh,sh]
)
logging.warning('warning message test2')
logging.error('error message test2')
logging.critical('critical message test2')
日志的切分
明天学习
面向对象
代码总行数2325行
python21day的更多相关文章
随机推荐
- J. Bottles
J. Bottles time limit per test 2 seconds memory limit per test 512 megabytes input standard input ou ...
- SOA 和微服务
====>场景 不可能让客户端与6个不同的应用/系统都一一去通信来去完成数据的展示.而是6个应用/系统之间进行彼此通信来完成调用,最后客户端只需要调用一个接口来获取数据即可. SOA架构 SOA ...
- 【机器学*】k*邻算法-03
心得体会: 需要思考如何将现实对象转化为特征向量,设置特征向量时记住鸭子定律1 鸭子定律1 如果走路像鸭子.说话像鸭子.长得像鸭子.啄食也像鸭子,那它肯定就是一只鸭子 事物的外在特征就是事物本质的表现 ...
- P4081 [USACO17DEC]Standing Out from the Herd P
知识点: 广义 SAM 原题面 Luogu 「扯」 随便「口胡」一下居然「过」了. 比较考验「代码能力」,第一次感觉「大模拟」没有白写((( 还有这个「符号」实在是太「上头」了. 前置知识 在线构造广 ...
- Mysql数据库语言学习的路线
对于我们数据库的学习,不管是测试人员还是开发人员以及我们的DBA来说重点都是SQL:但是我们的SQL可以分多少类型,学习重点又是在哪里呢,本文仅仅针对测试人员来展开说明: SQL:structure ...
- uniapp中scroll-view自定义滚动条
注意事项 需在app.vue中添加如下,需要important /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ ::-webkit-scrollbar { width: 16upx!imp ...
- CS5213高性价比替代AG6200芯片|兼容台湾AG6200芯片|CS5213Capstone
CS5213是一款HDMI转VGA带音频信号转出的芯片方案,CS5213支持HDCP协议,且外围电路比台湾安格AG6200要少,且本身CS5213芯片成本比AG6200要低,整个方案设计简单性价比较高 ...
- 安装并配置 Android Studio 开发工具和 Genymotion 模拟器
需求说明: 安装并配置 Android Studio 开发工具和 Genymotion 模拟器. 熟练使用 Genymotion 模拟器,掌握 Genymotion 模拟器的基本设置和程序安装. 实现 ...
- SpringCloud创建Gateway模块
1.说明 本文详细介绍Spring Cloud创建Gateway模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 和已经创建好的Eureka ...
- shell中的2>/dev/null
1.文件描述符Linux系统预留可三个文件描述符:0.1和2,他们的意义如下所示:0--标准输入(stdin)1--标准输出(stdout)2--标准错误(stderr) 标准输出--stdout假设 ...