Python模块之random、hashlib、json、time等内置模块语法学习

Python内置模块语法学习

random、hashlib、json、time、datetime、os等内置模块语法学习

模块


简单理解为就是一个.py后缀的一个文件

分为三种:

  • 内置模块:python自带,可调用
  • 第三方模块:别人设计的,可调用
  • 自定义模块:自己编写的,可调用

模块之间苦于相互调用,是Python最高级别的组织单元,将程序代码和数据封装起来,可以重用。

导入方式:

  • import 直接将一个模块导入进来
  • from xxx import xxx 从一个模块中,导入具体的工具

理论上,python模块中,任意一个地方都可以进行导入,但是规范上,我们开发潜规则上,将导入的部分放在python模块文件最开始的位置编写

代码展示:

复制代码
import random
from datetime import datetime

random模块


  • random.randint() 随机生成一个范围内的整数
    (a,b),a到b的范围内整数
  • random.uniform() 随机生成一个范围内的小数
    (a,b),a到b的范围内整数
  • random.choice() 随机抽取列表中的一个元素
  • random.sample() 随机抽取列表中若干个元素
    (list1,a) list1中抽a个
  • random.shuffle() 随机打乱列表中的元素

代码展示:

复制代码
import random
for i in range(2,5):
    s1 = random.randint(2,5)
    print(s1)
print('_'*50)
for i in range(2, 5):
    s2 = random.uniform(2,5)
    print(s2)
print('_'*50)
for i in range(2, 5):
    list1 = [2,3,4,5]
    s3 = random.choice(list1)
    print(s3)
print('_'*50)
for i in range(2, 5):
    list1 = [2,3,4,5]
    s4 = random.sample(list1,2)
    print(s4)
print('_'*50)
list1 = [2,3,4,5]
random.shuffle(list1)
print(list1)

运行结果:

hashlib模块


该模块主要是进行数据加密的作用。

常见的加密方式:

  • sha256()【可逆】
  • md5()【不可逆】

若想要对一个明文进行MD5加密的话,一般都不是直接进行加密,而是先进行加盐操作,之后才会进行md5加密。

代码展示:

复制代码
import hashlib
info = '这里是要加密的:12345678'
# 创建hashlib中的加密对象,md5()加密方法
md5_obj = hashlib.md5()
# 设置确定要编码的明文和加密使用的编码
md5_obj.update(info.encode('UTF-8'))
# 调用函数,开始加密
mi_wen = md5_obj.hexdigest()
print(f"明文:{info},通过md5加密后得到密文:{mi_wen}")
info = '这里是要加密的:12345678'
# 创建hashlib中的加密对象,md5()加密方法
sha256_obj = hashlib.sha256()
sha256_obj.update(info.encode('UTF-8'))
# 调用函数,开始加密
mi_wen = sha256_obj.hexdigest()
print(f"明文:{info},通过sha256加密后得到密文:{mi_wen}")
print('-'*50)
info = '这里是要加密的:12345678'
# 创建hashlib中的加密对象
md5_obj = hashlib.md5('---'.encode('UTF-8')) # 加盐操作
# 设置编码
md5_obj.update(info.encode('UTF-8'))
# 调用函数,开始加密
mi_wen = md5_obj.hexdigest()
print(f"明文:{info},通过md5加密后得到密文:{mi_wen}")

json模块


本质上是一个特殊格式的字符串 ,但是相比较于字符串而言,json是可以通过键获取值的

判断一个字符串是否符合json的格式:

  • 看字符串是否是由双引号括起来,若不是,那么该字符串转不了json格式数据
  • 若值是由小括号括起来的多个元素,也是不能够转json格式数据的

序列化和反序列化:

  • 序列化:将代码中的数据转化成网络中传输的数据流
    【python中的字典数据 --> json格式的字符串】
    json.dumps(dict,ensure_ascii=False)
  • 反序列化:将网络中传输的数据流还原成代码中的数据格式
    【json格式的字符串 --> python中的字典数据】
    json.loads(json)

代码展示:

复制代码
import json
#【python中的字典数据 --> json格式的字符串】
d1 = {"数值1":"1","数值2":"2","数值3":"3","数值4":"4"}
print(d1,type(d1))
d1 = {"数值1":"1","数值2":"2","数值3":"3","数值4":"4"}
d1 = json.dumps(d1,ensure_ascii=False)
print(d1,type(d1))
print("_"*50)
#若不是双引号括起来,那么该字符串转不了json格式数据
d2 = {'数值1': '1', '数值2': '2', '数值3': '3', '数值4': '4'}
d2 = json.dumps(d2,ensure_ascii=False)
print(d1,type(d2))
print("_"*50)
# 【json格式的字符串 --> python中的字典数据】
j ='''{"数值1":"1","数值2":"2","数值3":"3","数值4":"4"}'''
print(j,type(j))
j = json.loads(j)
print(j,type(j))

运行结果:

time 和 datetime模块


  • time.time()
    生成时间戳格式对象,时间戳存储时占用的字节相比较于格式化后的字符串而言,是少很多的。

代码展示:

复制代码
import time
from datetime import datetime

t1 = time.time()
print(t1,type(t1))

运行结果:

  • 时间戳 ->datetime ->格式化日期转换

代码展示:

复制代码
import time
from datetime import datetime

t1 = time.time()
print(t1,type(t1))
# 时间戳 -> datetime
t1 = datetime.fromtimestamp(t1)
print(t1,type(t1))
#datetime-> 年日月时分秒
t1 = datetime.strftime(t1,'%Y-%m-%d-%H:%M:%S')
print(t1,type(t1))

运行结果:

  • 字符串 -> datetime-> 时间戳

代码展示:

复制代码
t1 = '2024-12-06-20:03:13'
print(t1,type(t1))
# 字符串 -> datetime
t1 = datetime.strptime(t1,'%Y-%m-%d-%H:%M:%S')
print(t1,type(t1))
# datetime-> 时间戳
t1 = t1.timestamp()
print(t1,type(t1))

运行结果:

  • 使用datetime对象中的属性可以时间获取年月日时分秒

代码展示:

复制代码
import time
from datetime import datetime
t1 = 1733486593.9999
t1 = datetime.fromtimestamp(t1)
print(f"{t1.year}年{t1.month}月{t1.day},{t1.hour}时{t1.minute}分{t1.second}秒")

运行结果:

os模块


使用os模块中的功能操作文件或者文件夹

  • os.path.exists()判断目标是否存在

并且如果有\b或者\t,\n等特殊含义的命名,需要\来表现

  • os.path.join()路径拼接
  • os.path.abspath(file)获取当前文件所在的路径
  • os.path.dirname()获取某一个文件所处的父级目录路径
  • os.path.isfile()判断一个路径是否是文件
  • os.mkdir()创建一个文件夹
  • 删除路径
    • os.remove()若目标路径是一个文件
    • os.rmdir()若目标文件是一个文件夹

代码展示:

复制代码
import os
# os.path.join()路径拼接
ml = os.path.join('day09','data','test1')
print(ml)
print(os.path.exists(ml))
print('_'*50)
#获取当前文件所在的路径
ml1 = os.path.abspath(__file__)
print(ml1)
print(os.path.exists(ml1))
print('_'*50)
#获取某一个文件所处的父级目录路径
ml2 = os.path.dirname(ml1)
print(ml2)
print('_'*50)
#判断一个路径是否是文件
print(os.path.isfile(ml1))
print(os.path.isfile(ml2))
print('_'*50)
#判断一个路径是否是文件夹
print(os.path.isdir(ml1))
print(os.path.isdir(ml2))
#创建一个文件夹
ml3 = os.path.join('data','ml3')
os.mkdir(ml3)
#删除路径,若目标路径是一个文件
ml4 = 'E:\projects\pythonprojects\\base\day09\data\\test1'
os.remove(ml4)
#若目标文件是一个文件夹
os.rmdir(ml3)

运行结果:

相关推荐
徒手猫21 小时前
myslq 中json 格式的数据如何获取某个属性
android·json
Yunzenn21 小时前
深度解析字节前沿研究-Cola DLM第 04 章:Cola DLM 架构全景 —— 三层解耦的设计哲学
java·linux·python·深度学习·面试·github·transformer
lightqjx21 小时前
【前端】前端学习四之JavaScript(Web API -- DOM)
前端·javascript·学习
gjf05_051 天前
人该怎样活着呢?版本71.5
学习
秣厉科技1 天前
【番外】04:Python 和 LabVIEW 对接 DeepSeek API
python·labview·deepseek
小新同学^O^1 天前
简单学习 --> 限流和熔断
数据库·python·学习
kyraaa11 天前
618智能灭蚊器什么牌子好?电灭蚊灯哪个牌子好用?综合测评希亦、绳池等10大热门灭蚊灯品牌!
大数据·人工智能·python
deephub1 天前
推理 → 行动 → 观察:用 LangChain + Python 实现一个智能体循环
人工智能·python·langchain·大语言模型·agent
码界筑梦坊1 天前
143-基于Python的景点热度分析数据可视化分析系统
python·信息可视化·数据分析·毕业设计·fastapi
独隅1 天前
PyTorch转TFLite动态形状量化指南
人工智能·pytorch·python