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)

运行结果:

相关推荐
途途途途2 小时前
Python 给 Excel 写入数据的四种方法
windows·python·excel
走在考研路上4 小时前
Python错误处理
开发语言·python
数据小爬虫@4 小时前
Python爬虫:如何优雅地“偷窥”商品详情
开发语言·爬虫·python
闰土_RUNTU4 小时前
Pytorch分布式训练print()使用技巧
人工智能·pytorch·python·分布式训练·训练技巧
零光速4 小时前
数据处理与统计分析——10-Pandas可视化-Matplotlib的常用API
数据结构·python·数据分析·pandas·matplotlib
雨中奔跑的小孩5 小时前
爬虫学习案例3
爬虫·python·学习
冷环渊5 小时前
React基础学习
前端·学习·react.js
陌上笙清净5 小时前
flask内存马的真谛!!!
后端·python·网络安全·flask
A Genius6 小时前
Pytorch实现MobilenetV2官方源码
人工智能·pytorch·python
pzx_0017 小时前
【论文阅读】相似误差订正方法在风电短期风速预报中的应用研究
开发语言·论文阅读·python·算法·leetcode·sklearn