python学习笔记14 python中的库,常见的内置库(random、hashlib、json、时间、os)

接着上一篇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()随机抽取列表中若干个元素

    python 复制代码
    import random
    list=['啦啦啦','噜噜噜','嘎嘎嘎']
    n = random.sample(list,2)
    print(n, type(n))#['嘎嘎嘎', '啦啦啦'] <class 'list'>
  • shuffle()随机打乱列表中的元素

    python 复制代码
    list=['啦啦啦','噜噜噜','嘎嘎嘎']
    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 日期格式化

    python 复制代码
    s1=datetime.datetime.now()
    res1 = s1.strftime('%Y-%m-%d%H:%M:%S')
    print(res1)	#2024-12-0420:01:02
  • 时间戳 -> datetime

    python 复制代码
    tp = 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

    python 复制代码
    res3=datetime.datetime.strftime(res2,'%Y/%m/%d%H:%M:%S')
    print(res3, type(res3))
    #2024/12/0420:01:02 <class 'str'>
  • 字符串 -> datetime

    python 复制代码
    s2 = '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-> 时间戳

    python 复制代码
    tp2 = d2.timestamp()
    print(int(tp2)) #1733313662
  • datetime -> str

    python 复制代码
    res1 =datetime.datetime.strftime(s1,'%Y-%m-%d %H:%M:%S')
    print(res1)	#2024-12-04 20:36:23
  • 时间戳 -> datetime

    python 复制代码
    tp = time.time() # 当前的时间戳
    print(tp)#1733315783.2088883
  • datetime -> str

    python 复制代码
    res3=datetime.datetime.strftime(res2,'%Y/%m/%d %H:%M:%S')
    print(res3, type(res3))
    #2024/12/04 20:36:23 <class 'str'>
  • 字符串 -> datetime

    python 复制代码
    s2 = '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-> 时间戳

    python 复制代码
    tp2 = d2.timestamp()
    print(int(tp2))	#1732849348
os库

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

  • 判断目标是否存在

    python 复制代码
    import 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
  • 路径拼接

  • 获取当前文件所在的路径

    python 复制代码
    ml1=os.path.abspath(__file__) # __file__代表的是当前的文件
    print(ml1, type(ml1))
  • 获取某一个文件所处的父级目录路径

    python 复制代码
    ml2 = os.path.dirname(ml1)
    print(ml2,type(ml2))
  • 判断一个路径是否是文件

    python 复制代码
    ml1=os.path.abspath(__file__) 
    print(os.path.isfile(ml1)) 
  • 判断一个路径是否是文件夹

    python 复制代码
    ml1=os.path.abspath(__file__)
    ml2 = os.path.dirname(ml1)
    print(os.path.isdir(ml2))
  • 创建一个文件夹

    特别注意:

    若要创建一个文件夹,使用os模块中的mkdir函数

    若要创建一个文件,使用open函数以写的方式打开

    python 复制代码
    lj1=os.path.join('data','aaa')
    os.mkdir(lj1)
  • 删除路径

    • 若目标路径是一个文件

      python 复制代码
      lj1 = os.path.join('data','bbb')
      os.remove(lj1)
    • 若目标文件是一个文件夹

      python 复制代码
      lj1 = os.path.join('data','aaa')
      os.rmdir(lj1)
相关推荐
statistican_ABin12 分钟前
2026 FIFA 世界杯比赛与球队数据探索性分析
人工智能·python·数据挖掘·数据分析
qetfw13 分钟前
yt-dlp:下载公开视频、字幕、封面和音频的实用命令
python·音视频·开源项目·效率工具
QH_ShareHub16 分钟前
GPU 完整运行过程:驱动、CUDA Toolkit、Conda、Python PyTorch 与 R torch
pytorch·python·conda
AbsoluteLogic20 分钟前
Python——必学内置模块 Sys
python
开源量化GO28 分钟前
最新AI量化学习路径,从交易想法走到条件和动作
人工智能·python
YangYang9YangYan33 分钟前
2026数字经济专业毕业发展指南
物联网·学习
香蕉鼠片33 分钟前
图像处理经典脚本
图像处理·python·opencv
用户298698530141 小时前
Python 一键导出 Excel 中的图表和形状为图片
后端·python·excel
汤米粥1 小时前
Python爬虫——json解析
爬虫·python·json
AgCl231 小时前
JavaWeb个人笔记01--Maven到MyBatis
笔记·maven·mybatis