Python个人学习笔记(15):模块(time)
本章主要内容:
1.time模块(sleep)
2.datetime模块
3.random模块
4.序列化-pickle模块
5.序列化-json模块
6. hashilib模块
7. shutil模块
8. logging模块
9.异常处理
10. traceback
11.zipfile模块
12.正则表达式
13.re模块
14.os模块
15.sys模块
16.模块和包
17.第三方模块安装和使用
一、time
(一)模块介绍
模块其实就是我们把公用的功能代码写入在一个py文件中,在其他模块中可以随意的使用该文件中的代码。
导入一个模块的语法
1.import 模块
2.from 模块 import 功能
import time # 导入一个模块整体
from time import sleep # 从一个模块中导入一个具体的功能
用哪个都行
(二)time
1. sleep
我们一般会使用time模块让程序休息n秒,或者计算简单的时间差。
import time
print("你好")
time.sleep(3) # 暂停三秒
print("你才好呢")
爬虫中会用到,用于降低程序执行的频率
爬虫程序模拟:
while True:
print("抓取百度的信息")
time.sleep(1)
2. time.time():时间戳
选取一个时间点作为零点,从零点开始的秒数作为时间,即数字类型的时间。
代码:
print(time.time())
结果:
1741767846.205992
# 距离零点1741767846.205992秒
可以用于计算时间差
代码:
start = time.time()
for i in range(10000):
print(i)
end = time.time()
print(end - start)
结果:
0.027585983276367188
# 这个程序花了0.027585983276367188秒
二、datetime(重要)
常用于处理时间
(一)datetime.now:得到系统时间
得到系统时间
代码:
from datetime import datetime
print(datetime.now())
结果:
2025-03-12 16:41:47.828275
也可以打出指定时间
代码:
print(datetime(2018,1,2,12,12,13))
结果:
2018-01-02 12:12:13
(二)计算时间差
代码:
t1 = datetime(2018,1,2,12,30,00)
t2 = datetime(2018,1,4,14,30,00)
diff = t2 - t1
print(diff)
结果:
2 days, 2:00:00
# 两天两小时
还能得到一共差了多少秒
代码:
print(diff.total_seconds())
结果:
180000.0
(三)t.strftime、t.strptime:时间的格式化
t.strftime(格式化形式)
代码:
t = datetime.now()
print(t)
print(t.strftime("%Y年%m月%d日%H小时%M分钟%S秒")) # 把时间格式化成一个字符串
结果:
2025-03-12 16:54:27.546551
2025年03月12日16小时54分钟27秒
例:让用户输入两个时间,计算时间差
代码:
s1 = input("请输入第一个时间(yyyy-mm-dd hh:mm:ss):")
s2 = input("请输入第二个时间(yyyy-mm-dd hh:mm:ss):")
# 把字符串转化为时间
t1 = datetime.strptime(s1, "%Y-%m-%d %H:%M:%S") # p:parse
t2 = datetime.strptime(s2, "%Y-%m-%d %H:%M:%S") # 格式部分注意中英文符号的区别
print(t2-t1)
结果:
请输入第一个时间(yyyy-mm-dd hh:mm:ss):2025-01-23 12:13:24
请输入第二个时间(yyyy-mm-dd hh:mm:ss):2025-02-04 12:12:12
11 days, 23:58:48
datetime:年月日 时分秒
date:年月日(新版没有这个模块)
time:时分秒
必须要掌握的内容:
1. now():系统时间
2. datetime(year, month, day, hour, min, second)
3. strftime(“%Y-%m-%d %H:%M:%S”):时间格式化成字符串
4. strptime(str, “%Y-%m-%d %H:%M:%S”):把字符串转化成时间
三、random
random.random:生成(0,1)内的随机小数
代码:
import random
print(random.random())
print(random.random())
print(random.random())
结果:
0.6940466062205409
0.6733916751508989
0.7445562466157682
random.uniform:生成一个开区间范围的随机小数
代码:
print(random.uniform(5,9))
结果:
7.821629111940486
可以用于发红包
random.randint:生成一个闭区间范围的随机整数
代码:
print(random.randint(3,8))
结果:
3
random.choice:从列表中随机选择一个
lst = ["张无忌",'周杰伦','潘玮柏','赵四']
print(random.choice(lst))
random.sample:从列表中随机选择一部分(用得不如randint多)
lst = ["屠龙刀",'倚天剑','500金币','青龙偃月刀','溜溜球']
# 每次随机爆出两件装备
print(random.sample(lst,2))
练习:随机生成四位验证码
四位验证码,一个一个的生成,可能会有数字、大小写字母
代码:
def rand_num():
return str(random.randint(0, 9))
def rand_upper():
return chr(random.randint(65, 90)) # chr可以让一个数字变成字母
def rand_lower():
return chr(random.randint(97, 122)) # 数字是既定的ascii码排列
def rand_verify_code(n=4): # n默认为4,循环四次
lst = [] # 准备一个接收下面循环出来的值的列表
for i in range(n):
which = random.randint(1, 3) # 上述三种类型中随机出一个
if which == 1: # 随机数字
s = rand_num()
elif which == 2: # 随机一个大写字母
s = rand_upper()
elif which == 3:
s = rand_lower()
lst.append(s)
return ''.join(lst)
print(rand_verify_code())