接着上一篇python学习记录的内容,今天我们来看库
- 内置库:time、random、os、json...
- 第三方库:requests,pandas,numpy...
- 自定义库:xxx.py
导入的方式
- import 直接将一个库导入进来
python
import base.day04.login_demo as t # 导入login_demo模块并起了一个别名叫做t
- from xxx import xxx 从一个库中导入具体的工具
python
from lxml import etree
from base.day04.login_demo import register # 从模块login_demo中导入某一个函数
from base.day04.login_demo import register,login # 一次从模块中导入多个
from base.day04.login_demo import * # 导入模块中所有的内容
from base.day04.login_demo import login as t1 # 导入模块中的函数并重新命名
特别注意:自己定义的库名不要和内置或第三方的库名重名!!!
常见的内置库
random库
理论上,python中,任意一个地方都可以进行导入。但是规范上,我们开发潜规则上,将导入的部分放在python文件最开始的位置编写
-
randint()随机生成一个范围内的整数
-
uniform()随机生成一个范围内的小数
-
choice()随机抽取列表中的一个元素
python
import random
print(random.randint(1000,2000)) #1670
print(round(random.uniform(0,1),2)) #0.19
list=['啦啦啦','噜噜噜','嘎嘎嘎']
res=random.choice(list)
print(res) #啦啦啦
print(list) #['啦啦啦', '噜噜噜', '嘎嘎嘎']
-
sample()随机抽取列表中若干个元素
pythonimport random list=['啦啦啦','噜噜噜','嘎嘎嘎'] n = random.sample(list,2) print(n, type(n))#['嘎嘎嘎', '啦啦啦'] <class 'list'>
-
shuffle()随机打乱列表中的元素
pythonlist=['啦啦啦','噜噜噜','嘎嘎嘎'] random.shuffle(list) print(f"list1:{list}") #list1:['嘎嘎嘎', '噜噜噜', '啦啦啦']
hashlib库
该模块主要是数据加密的作用
- 常见的加密方式:sha256()【可逆】 md5()【不可逆】
python
import hashlib
info ='123456'
# 创建hashlib中的加密对象
md5_obj=hashlib.md5()
print(md5_obj,type(md5_obj))
# 设置编码
md5_obj.update(info.encode('utf-8'))
print(md5_obj,type(md5_obj))
# 调用函数,开始加密
mi_wen=md5_obj.hexdigest()
print(mi_wen)
一般情况下,在企业中,若想要对一个明文进行MD5加密的话,一般都不是直接进行加密,而是先对名进行加盐操作,之后才会进行md5加密。
python
import hashlib
info = '123456'
# 创建hashlib中的加密对象
md5_obj = hashlib.md5('yiyi'.encode('UTF-8')) # 加盐操作
# 设置编码
md5_obj.update(info.encode('UTF-8'))
# 调用函数,开始加密
mi_wen = md5_obj.hexdigest()
print(f"明文:{info},通过md5加密后得到密文:{mi_wen}") #0ead149c250ec554aff85fa083312a83
json库
本质上是一个特殊格式的字符串,但是相比较于字符串而言,json是可以通过键获取值的。判断一个字符串是否符合json的格式:
看字符串是否是由双引号括起来,若不是,那么该字符串转不了json格式数据若值是由小括号括起来的多个元素,也是不能够转
json格式数据的。
序列化和反序列化
- 序列化:将代码中的数据转化成网络中传输的数据流。
【python中的字典数据 --> json格式的字符串】
python
import json
dict1 = {
'name': '王俊凯',
'age': 18,
'likes': ['唱歌','演戏','打游戏'],
'pets': [
{'name': '汪汪','age': 1},
{'name': '旺旺','age': 2}]
}
s3 = json.dumps(dict1, ensure_ascii=False)
print(s3, type(s3))
- 反序列化:将网络中传输的数据流还原成代码中的数据格式 【json格式的字符串 --> python中的字典数据】
python
import json
s2 = '''
{"name": "王俊凯",
"age": 18,
"likes": ["唱歌", "演戏", "打游戏"],
"pets": [{"name": "汪汪", "age": 1},
{"name": "旺旺", "age": 2}]}
'''
print(s2, type(s2))
# print(s2['age'])
res1 = json.loads(s2)
print(res1, type(res1))
print(res1['likes'])
时间库
python
import time
res1 = time.time() # 得到的是一个时间戳格式的数据
print(res1, type(time)) #13662.5493166 <class 'module'>
时间戳存储时占用的字节相比较于格式化后的字符串而言,是少很多的。
-
datetime -> str 日期格式化
pythons1=datetime.datetime.now() res1 = s1.strftime('%Y-%m-%d%H:%M:%S') print(res1) #2024-12-0420:01:02
-
时间戳 -> datetime
pythontp = time.time() # 当前的时间戳 print(tp) #1733313662.5493166 res2 = datetime.datetime.fromtimestamp(tp) print(res2, type(res2)) #2024-12-04 20:01:02.549317 <class 'datetime.datetime'>
-
datetime -> str
pythonres3=datetime.datetime.strftime(res2,'%Y/%m/%d%H:%M:%S') print(res3, type(res3)) #2024/12/0420:01:02 <class 'str'>
-
字符串 -> datetime
pythons2 = '2024/12/04 20:01:02' d2=datetime.datetime.strptime(s2,'%Y/%m/%d %H:%M:%S') print(d2, type(d2)) #2024-12-04 20:01:02 <class 'datetime.datetime'>
-
datetime-> 时间戳
pythontp2 = d2.timestamp() print(int(tp2)) #1733313662
-
datetime -> str
pythonres1 =datetime.datetime.strftime(s1,'%Y-%m-%d %H:%M:%S') print(res1) #2024-12-04 20:36:23
-
时间戳 -> datetime
pythontp = time.time() # 当前的时间戳 print(tp)#1733315783.2088883
-
datetime -> str
pythonres3=datetime.datetime.strftime(res2,'%Y/%m/%d %H:%M:%S') print(res3, type(res3)) #2024/12/04 20:36:23 <class 'str'>
-
字符串 -> datetime
pythons2 = '2024/11/29 11:02:28' d2=datetime.datetime.strptime(s2,'%Y/%m/%d %H:%M:%S') print(d2, type(d2)) #2024-11-29 11:02:28 <class 'datetime.datetime'>
-
datetime-> 时间戳
pythontp2 = d2.timestamp() print(int(tp2)) #1732849348
os库
使用os模块中的功能操作文件或者文件夹
-
判断目标是否存在
pythonimport os x=os.path.exists('E:\\projects\\PycharmProjects\\bigdata33\\base\\day07\\data\\user_info') y=os.path.exists('D:\\pycharmprojects\\base\day06\\__init__.py') print(x)# False print(y)# True
-
路径拼接
-
获取当前文件所在的路径
pythonml1=os.path.abspath(__file__) # __file__代表的是当前的文件 print(ml1, type(ml1))
-
获取某一个文件所处的父级目录路径
pythonml2 = os.path.dirname(ml1) print(ml2,type(ml2))
-
判断一个路径是否是文件
pythonml1=os.path.abspath(__file__) print(os.path.isfile(ml1))
-
判断一个路径是否是文件夹
pythonml1=os.path.abspath(__file__) ml2 = os.path.dirname(ml1) print(os.path.isdir(ml2))
-
创建一个文件夹
特别注意:
若要创建一个文件夹,使用os模块中的mkdir函数
若要创建一个文件,使用open函数以写的方式打开
pythonlj1=os.path.join('data','aaa') os.mkdir(lj1)
-
删除路径
-
若目标路径是一个文件
pythonlj1 = os.path.join('data','bbb') os.remove(lj1)
-
若目标文件是一个文件夹
pythonlj1 = os.path.join('data','aaa') os.rmdir(lj1)
-