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)
相关推荐
袁袁袁袁满7 分钟前
100天精通Python(爬虫篇)——第113天:‌爬虫基础模块之urllib详细教程大全
开发语言·爬虫·python·网络爬虫·爬虫实战·urllib·urllib模块教程
老大白菜29 分钟前
Python 爬虫技术指南
python
QQ同步助手39 分钟前
如何正确使用人工智能:开启智慧学习与创新之旅
人工智能·学习·百度
流浪的小新1 小时前
【AI】人工智能、LLM学习资源汇总
人工智能·学习
A懿轩A2 小时前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
古希腊掌管学习的神2 小时前
[搜广推]王树森推荐系统——矩阵补充&最近邻查找
python·算法·机器学习·矩阵
云边有个稻草人2 小时前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
LucianaiB3 小时前
探索CSDN博客数据:使用Python爬虫技术
开发语言·爬虫·python
PieroPc5 小时前
Python 写的 智慧记 进销存 辅助 程序 导入导出 excel 可打印
开发语言·python·excel
梧桐树04299 小时前
python常用内建模块:collections
python