内置模块

1.序列化模块
序列化:将一个数据结构(list,dict...)转化成一个特殊的序列(特殊的字符串)的过程
序列化模块: 将一种数据结构转化成特殊的序列(特殊的字符串,bytes)并且还可以反转回去.
1.json模块: 是所有语言公认的一种序列.最常用的,但支持的python数据结构有限=>int,str,bool,dict,list,tuple,None,float
2.pickle模块: 只能python语言中使用的,支持python所有的数据类型以及对象.
3.shevle模块(了解): 只能是文件存取.
1.1 json序列化
import json
# dumps,loads 主要用于网络传输,可以用于文件的存取.
dic = {'username': '太白', 'password': 123,'status': False}
ret = json.dumps(dic)
print(ret)
ret_dict = json.loads(ret)
print(ret_dict)
# 特殊的参数
dic = {'username': '太白', 'password': 123,'status': False}
ret = json.dumps(dic,ensure_ascii=False,sort_keys=True)
print(ret)
# 写入文件
dic = {'username': '太白', 'password': 123,'status': False}
s_dict = json.dumps(dic)
with open('jsonlx.json',encoding='utf-8',mode='w') as f1:
    f1.write(s_dict)
with open('jsonlx.json',encoding='utf-8') as f2:
    content = f2.read()
    print(json.loads(content))
# 多个数据存储到一个文件中
dic1 = {'username': '太白', 'password': 123,'status': False}
dic2 = {'username': 'alex', 'password': 123,'status': False}
dic3 = {'username': 'ly', 'password': 123,'status': False}
with open('jsonmore.json',encoding='utf-8',mode='a') as f1:
    f1.write(f'{json.dumps(dic1)}\n{json.dumps(dic2)}\n{json.dumps(dic3)}')
with open('jsonmore.json',encoding='utf-8') as f1:
    for line in f1:
        ret = json.loads(line)
        print(ret)
# dump load 单个数据的存取文件.
dic = {'username': '太白', 'password': 123,'status': False}
with open('jsonlx1.json',encoding='utf-8',mode='w') as f1:
    json.dump(dic,f1)
with open('jsonlx1.json',encoding='utf-8') as f1:
    dic1 = json.load(f1)
print(dic1)
1.2 pickle序列化
import pickle  
# dumps,loads  只能是网络传输
l1 = ['wusir', '太白', '小黑', 666]
ret = pickle.dumps(l1)  =>  直接转换成bytes
print(ret)
l2 = pickle.loads(ret)
print(l2)

# dump load 数据结构存取文件.
l1 = ['wusir', '太白', '小黑', 666]
with open('pickle练习.pickle',mode='wb') as f1:
    pickle.dump(l1,f1)
with open('pickle练习.pickle', mode='rb') as f1:
    ret = pickle.load(f1)
    print(ret)
# 多个数据写入文件
l1 = ['wusir', '太白', '小黑1', 666]
l2 = ['wusir', '太白', '小黑2', 666]
l3 = ['wusir', '太白', '小黑3', 666]
with open('pickle练习1.pickle',mode='wb') as f1:
     pickle.dump(l1,f1)
     pickle.dump(l2,f1)
     pickle.dump(l3,f1)
with open('pickle练习1.pickle', mode='rb') as f1:
    ret1 = pickle.load(f1)
    ret2 = pickle.load(f1)
    ret3 = pickle.load(f1)
    print(ret1,ret2,ret3)
2.os模块
# 目录 => 文件夹.
# 工作目录,当前目录,父级目录
import os
print(os.getcwd())   绝对路径  ***
os.chdir(r'D:\s23\day9')  改变当前脚本工作目录
print(os.curdir)  返回当前目录的字符串名 => . **
print(os.pardir)  返回当前目录的父目录字符串名 => .. **
# 与文件夹相关 
os.makedirs('dirname1/dirname2/dirname3/dirname4')  创建多级目录
os.removedirs('dirname1/dirname2/dirname3/dirname4')  截止到有文件的那层
os.mkdir(r'C:\蔡徐坤')  创建单级目录
os.rmdir('蔡徐坤')  删除单级空目录,若目录不为空则无法删除,报错
print(os.listdir(r'D:\s23\蔡徐坤'))  列出指定目录下的所有文件和子目录
# 和文件相关
os.remove()  删除一个文件  ***
os.rename("oldname","newname")  重命名文件/目录  ***
print(os.stat(r'D:\s23\day17\01 昨日内容回顾.py'))  获取文件/目录信息 **
# 与路径相关(path)  ***
print(os.path.abspath(path))   返回path的绝对路径
print(__file__)   动态获取当前文件的绝对路径
print(os.path.split(path))  将path分割成目录和文件名以一个元组返回 
print(os.path.dirname(path))  返回path的父级目录,其实就是os.path.split(path)的第一个元素  
print(os.path.basename(path))  返回path最后的文件名,即os.path.split(path)的第二个元素
print(os.path.dirname(os.path.dirname(__file__)))  返回当前文件的爷爷级的目录
print(os.path.isabs(path))  判断是否存在此绝对路径
print(os.path.isdir(path))  判断是否存在此目录(文件夹)
print(os.path.isfile(path))  判断是否存在此文件名
print(os.path.exists(path))  判断是否存在此路径(目录,文件名)
path = os.path.join(path1,path2,path3,path4)    将多个路径组合后返回
path = os.path.join(os.path.dirname(__file__),path1,path2)  动态获取路径
print(os.path.getatime(path))  返回path所指向的文件或者目录的最后访问时间  
print(os.path.getmtime(path))  返回path所指向的文件或者目录的最后修改时间  
print(os.path.getsize(path))  返回path的大小 
3.sys模块
import sys
sys.path  返回模块的搜索路径  ***
sys.exit(n)   退出程序
print(sys.version)  python版本信息
4.hashlib模块
hashlib加密
1.将一个bytes类型的数据通过hashlib进行加密返回一个等长度的16进制数字.
2.过程不可逆.
3.相同的bytes类型的数据通过相同的加密方法得到的数字绝对相同.
4.不相同的bytes类型的数据通过相同的加密方法得到的数字绝对不相同.
import hashlib
# 密码加密  md5
ret = hashlib.md5()
ret.update('123'.encode('utf-8'))
s = ret.hexdigest()
print(s)
# 撞库 => 加固定盐
ret = hashlib.md5('蔡徐坤'.encode('utf-8'))
ret.update('123456'.encode('utf-8'))
s = ret.hexdigest()
print(s)
# 加动态的盐
username = input('输入用户名:').strip()
password = input('输入密码').strip()
ret = hashlib.md5(username[::2].encode('utf-8'))
ret.update(password.encode('utf-8'))
s = ret.hexdigest()
print(s)
# sha系列(安全系数高,耗时高) =>  加盐,加动态盐
ret = hashlib.sha512()
ret.update('123'.encode('utf-8'))
s = ret.hexdigest()
print(s)
# 文件的一致性校验
low版
ret = hashlib.md5()
with open('文件校验',mode='rb') as f1:
    content = f1.read()
    ret.update(content)
print(ret.hexdigest())
ret = hashlib.md5()
with open('文件校验1',mode='rb') as f1:
    content = f1.read()
    ret.update(content)
print(ret.hexdigest())

分步update
s1 = '老男孩教育 最好的python 讲师 是 太白'
ret = hashlib.md5()
ret.update('老男孩教育'.encode('utf-8'))
ret.update(' 最好的python'.encode('utf-8'))
ret.update(' 讲师 是'.encode('utf-8'))
ret.update(' 太白'.encode('utf-8'))
print(ret.hexdigest()) 

=> 高大上版(可拓展)
def md5_file(path):
    ret = hashlib.md5()
    with open(path,mode='rb') as f1:
        while True:
            content = f1.read(1024)
            if content:
                ret.update(content)
            else:
                return ret.hexdigest()
5.time模块
import time
print(time.time())   世界戳
print(time.strftime("%y-%m-%d %H:%M:%S  %A"))  格式化时间  =>  年,月,日,时,分,秒  星期
=>ret = time.strftime("%Y{}%m{}%d{} %H:%M:%S")
print(ret.format('年','月','日'))  加入中文
print(time.localtime())  结构化时间
# 时间戳转化结构化时间
timestamp=time.time()
st=time.localtime(timestamp)
ft=time.strftime('%y-%m-%d %H:%M:%S',st)
print(ft)
# 结构化时间转化时间戳
ft=time.strftime('%y-%m-%d %H:%M:%S')
st=time.strptime(ft,'%y-%m-%d %H:%M:%S')
timestamp=time.mktime(st)
print(timestamp)
6.datetime模块
import datetime  =>  from datetime import datetime
time_now = datetime.datetime.now()  当前时间
print(str(time_now)))   可切片
print(time_now.replace(year=1979))  可直接使用replace
print(datetime.datetime.now() + datetime.timedelta(weeks=3)) 调整时间  三周后
print(datetime.datetime.now() + datetime.timedelta(weeks=-4))        四周前
print(datetime.datetime.now() + datetime.timedelta(days=-15))        15天前
print(datetime.date.fromtimestamp())  将时间戳转化成格式化时间
7.random模块
import random  随机
print(random.random())  大于0且小于1之间的小数
print(random.uniform(1, 6))  大于1小于6的小数
print(random.randint(1,5))  大于等于1且小于等于5之间的整数
print(random.randrange(1,10,2))  大于等于1且小于10之间的奇数
print(random.choice(['如花', '凤姐', '石榴姐']))  随机选择一个返回
print(random.sample(('如花', '凤姐', '石榴姐'), 2))  随机选择多个返回,返回的是一个列表
item = [i for i in range(10)]
random.shuffle(item)
print(item)    =>  打乱顺序

转载于:https://www.cnblogs.com/wxl1025/p/11099944.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值