Python内置模块

12 内置模块

12.1 pickle和json序列化

json转换表

image.png

code:

# *******************************************************************
"""
系统内置模块:安装python解释器后,系统给提供的模块,在需要时可以导入后使用,例如:json,re,os等等
序列化模块:
 什么是序列化?为什么需要序列化?
 序列化是指可以把python中的数据,以文本或二进制的方式进行转换,并且还能反序列化为原来的数据。
 一般数据在程序和网络中进行数据传输和存储时,需要更统一和更标准的形式进行存储和传输,因此需要序列化。
 常用序列化模块:
 json---文本序列化模块(广泛使用)
 Pickle---二进制序列化模块(python中常用)
Pickle序列化:
 dumps(var)序列化---返回python对象序列化后的二进制数据
 loads(var)反序列化---返回二进制反序列化后的python对象
 dump(vars,file)序列化---把一个数据对象进行序列化并写入到已打开的文件中
 load(file)反序列化---在已打开的文件中读取序列化的数据,并且进行反序列化,返回反序列化的python对象
json序列化:JavaScript Object Notation
 json是一个受JavaScript对象语法的轻量级数据交换格式
 json是js语言中一个对象的表示方法,和Python中字典的定义规则和语法都很像
 json在互联网中一种通用的数据交换、数据传输、数据定义的一种数据格式
 Python中提供的json模块,可以把一些符合转化你的python数据,转换为json格式的数据
 注意:集合是不可json序列化类型;被json序列化的元组反序列化后会变成列表。

 dumps(vars)---使用json转换表将vars序列化为JSON格式的str。
 loads(vars)---使用json转换表将vars反序列化为Python对象。如果反序列化的数据不是有效JSON文档,引发JSONDecodeError错误。
 dump(vars,file)序列化---使用json转换表将vars序列化为JSON格式化流形式的fp。
 load(file)反序列化---使用json转换表将fp(一个支持.read()并包含一个JSON文档的text file或者binary file)反序列化为一个Python对象。
"""
import pickle
import json
print("Pickle*************************************************************")
print("Pickle dumps()*****************************************************")
var_str = 'i love you'
var_num = 100
var_list = [1,2,3,4,5]
var_tuple = (1,2,3,4,5)
var_dict = {'name':'Jamsine','sex':'girl','year':23}
var_set = {1,2,3,4}
res_str = pickle.dumps(var_str)
res_num = pickle.dumps(var_num)
res_list = pickle.dumps(var_list)
res_tuple = pickle.dumps(var_tuple)
res_dict = pickle.dumps(var_dict)
res_set = pickle.dumps(var_set)
print(f"pickle.dumps(var_str) = {res_str}")
print(f"pickle.dumps(var_num) = {res_num}")
print(f"pickle.dumps(var_list) = {res_list}")
print(f"pickle.dumps(var_tuple) = {res_tuple}")
print(f"pickle.dumps(var_dict) = {res_dict}")
print(f"pickle.dumps(var_set) = {res_set}")
print("Pickle loads()*****************************************************")
res_str_rev = pickle.loads(res_str)
res_num_rev = pickle.loads(res_num)
res_list_rev = pickle.loads(res_list)
res_tuple_rev = pickle.loads(res_tuple)
res_dict_rev = pickle.loads(res_dict)
res_set_rev = pickle.loads(res_set)
print(f"pickle.loads(res_str) = {res_str_rev},{type(res_str_rev)}")
print(f"pickle.loads(res_num) = {res_num_rev},{type(res_num_rev)}")
print(f"pickle.loads(res_list) = {res_list_rev},{type(res_list_rev)}")
print(f"pickle.loads(res_tuple) = {res_tuple_rev},{type(res_tuple_rev)}")
print(f"pickle.loads(res_dict) = {res_dict_rev},{type(res_dict_rev)}")
print(f"pickle.loads(res_set) = {res_set_rev},{type(res_set_rev)}")
print("Pickle dump()*****************************************************")
with open('./data.txt','wb') as fp:
 pickle.dump(var_dict,fp)
print("Pickle load()*****************************************************")
with open('./data.txt','rb') as fp:
 res = pickle.load(fp)
 print(f"pickle.load(fp) = {res},{type(res)}")
print("json*************************************************************")
print("jaon loads()*****************************************************")
res_str = json.dumps(var_str)
res_num = json.dumps(var_num)
res_list = json.dumps(var_list)
res_tuple = json.dumps(var_tuple)
res_dict = json.dumps(var_dict)
print(f"json.dumps(var_str) = {res_str},{type(res_str)}")
print(f"json.dumps(var_num) = {res_num},{type(res_num)}")
print(f"json.dumps(var_list) = {res_list},{type(res_list)}")
print(f"json.dumps(var_tuple) = {res_tuple},{type(res_tuple)}")
print(f"json.dumps(var_dict) = {res_dict},{type(res_dict)}")
print("jaon loads()*****************************************************")
res_str_rev = json.loads(res_str)
res_num_rev = json.loads(res_num)
res_list_rev = json.loads(res_list)
res_tuple_rev = json.loads(res_tuple)
res_dict_rev = json.loads(res_dict)
print(f"json.loads(res_str) = {res_str_rev},{type(res_str_rev)}")
print(f"json.loads(res_num) = {res_num_rev},{type(res_num_rev)}")
print(f"json.loads(res_list) = {res_list_rev},{type(res_list_rev)}")
print(f"json.loads(res_tuple) = {res_tuple_rev},{type(res_tuple_rev)}")
print(f"json.loads(res_dict) = {res_dict_rev},{type(res_dict_rev)}")
print(f"json.loads(res_set) = {res_set_rev},{type(res_set_rev)}")
print("json dump()*****************************************************")
with open('./data.json','w',encoding='utf-8') as fp:
 json.dump(var_dict,fp)
print("json load()*****************************************************")
with open('./data.json','r',encoding='utf-8') as fp:
 res = json.load(fp)
 print(f"json.load(fp) = {res},{type(res)}")

运行结果:

Pickle*************************************************************
Pickle dumps()*****************************************************
pickle.dumps(var_str) = b'\x80\x04\x95\x0e\x00\x00\x00\x00\x00\x00\x00\x8c\ni love you\x94.'
pickle.dumps(var_num) = b'\x80\x04Kd.'
pickle.dumps(var_list) = b'\x80\x04\x95\x0f\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03K\x04K\x05e.'
pickle.dumps(var_tuple) = b'\x80\x04\x95\x0e\x00\x00\x00\x00\x00\x00\x00(K\x01K\x02K\x03K\x04K\x05t\x94.'
pickle.dumps(var_dict) = b'\x80\x04\x95,\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x04name\x94\x8c\x07Jamsine\x94\x8c\x03sex\x94\x8c\x04girl\x94\x8c\x04year\x94K\x17u.'
pickle.dumps(var_set) = b'\x80\x04\x95\r\x00\x00\x00\x00\x00\x00\x00\x8f\x94(K\x01K\x02K\x03K\x04\x90.'
Pickle loads()*****************************************************
pickle.loads(res_str) = i love you,<class 'str'>
pickle.loads(res_num) = 100,<class 'int'>
pickle.loads(res_list) = [1, 2, 3, 4, 5],<class 'list'>
pickle.loads(res_tuple) = (1, 2, 3, 4, 5),<class 'tuple'>
pickle.loads(res_dict) = {'name': 'Jamsine', 'sex': 'girl', 'year': 23},<class 'dict'>
pickle.loads(res_set) = {1, 2, 3, 4},<class 'set'>
Pickle dump()*****************************************************
Pickle load()*****************************************************
pickle.load(fp) = {'name': 'Jamsine', 'sex': 'girl', 'year': 23},<class 'dict'>
json*************************************************************
jaon loads()*****************************************************
json.dumps(var_str) = "i love you",<class 'str'>
json.dumps(var_num) = 100,<class 'str'>
json.dumps(var_list) = [1, 2, 3, 4, 5],<class 'str'>
json.dumps(var_tuple) = [1, 2, 3, 4, 5],<class 'str'>
json.dumps(var_dict) = {"name": "Jamsine", "sex": "girl", "year": 23},<class 'str'>
jaon loads()*****************************************************
json.loads(res_str) = i love you,<class 'str'>
json.loads(res_num) = 100,<class 'int'>
json.loads(res_list) = [1, 2, 3, 4, 5],<class 'list'>
json.loads(res_tuple) = [1, 2, 3, 4, 5],<class 'list'>
json.loads(res_dict) = {'name': 'Jamsine', 'sex': 'girl', 'year': 23},<class 'dict'>
json.loads(res_set) = {1, 2, 3, 4},<class 'set'>
json dump()*****************************************************
json load()*****************************************************
json.load(fp) = {'name': 'Jamsine', 'sex': 'girl', 'year': 23},<class 'dict'>

Process finished with exit code 0

12.2 math

code:

# ****************************************************************
"""
math:
 math.ceil(vars)---向上取整,内置函数round()四舍五入
 math.floor(vars)---向下取整
 math.pow(vars,n)---计算数值的n次方,返回值为浮点数
 math.sqrt(vars)---开平方运算,返回值为浮点数
 math.fabs(vars)---计算绝对值,返回值为浮点数
 math.modf(vars)---把数值拆分成小数和整数组成的的元素,返回值为元素
 math.copysign(x,y)---把第二个参数的正负符号拷贝给第一个参数,返回值为第一个参数+第二个参数符号,返回值为浮点数
 math.fsum(container)---将一个容器类型中的元素求和,返回值为和的浮点数(容器类型中的元素必须为number)
 math.factorial(x)---返回一个整数返回x的阶乘。 如果x不是整数或为负数时则将引发 ValueError。
 还要很多函数见网址:https://docs.python.org/zh-cn/3/library/math.html
"""
import math
var_num = 99.99
print(f"var_num = {var_num}")
print(f"math.ceil(var_num) = {math.ceil(var_num)}")
print(f"math.floor(var_num) = {math.floor(var_num)}")
print(f"math.pow(9,2) = {math.pow(9,2)}")
print(f"math.sqrt(81) = {math.sqrt(81)}")
print(f"math.fabs(-99.99) = {math.fabs(-99.99)}")
print(f"math.modf(-99.99) = {math.modf(-99.99)}")
print(f"math.copysign(99,-99.99) = {math.copysign(99,-99.99)}")
print(f"math.fsum([1,2,3,4]]) = {math.fsum([1,2,3,4])}")
print(f"math.factorial(4) = {math.factorial(4)}")

运行结果:

var_num = 99.99
math.ceil(var_num) = 100
math.floor(var_num) = 99
math.pow(9,2) = 81.0
math.sqrt(81) = 9.0
math.fabs(-99.99) = 99.99
math.modf(-99.99) = (-0.9899999999999949, -99.0)
math.copysign(99,-99.99) = -99.0
math.fsum([1,2,3,4]]) = 10.0
math.factorial(4) = 24

Process finished with exit code 0

12.3 random

code:

# *************************************************************
"""
网址:https://docs.python.org/zh-cn/3/library/random.html
随机数的应用场景:数字验证码,高并发下的订单号
random:
 random.random()---返回0-1之间的随机小数,左闭右开区间
 random.randrange([开始值],结束值,[步进值])---随机获取指定范围内的整数,默认开始值为0,默认步进值为1,同样是左闭右开区间
 random.randint(a,b)---返回随机整数N满足a<=N<=b。相当于randrange(a,b+1)。
 random.uniform(a,b)---返回一个随机浮点数N,当a<=b时a<= N<=b当b<a时b<=N<=a。
 random.choice(seq)---从非空序列seq返回一个随机元素。如果seq为空,则引发IndexError。
 random.shuffle(x[,random])---随机打乱列表中的值,没有返回值,直接打乱源数据;
 可选参数random是一个0参数函数,在 [0.0,1.0)中返回随机浮点数;默认情况下,这是函数 random() 。
"""
import random
print(f"random.random() = {random.random()}")
print(f"random.randrange(1,10,1) = {random.randrange(1,10,1)}")
print(f"random.randint(1,10) = {random.randrange(1,10)}")
print(f"random.uniform(1,10) = {random.uniform(1,10)}")
listvar = [1,2,3,4,5,6,99,10]
print(f"Original listvar = {listvar}")
print(f"random.choice(listvar) = {random.choice(listvar)}")
print(f"random.shuffle(listvar) = {random.shuffle(listvar)}")
print(f"Disrupted listvar = {listvar}")

运行结果:

random.random() = 0.1842197058888021
random.randrange(1,10,1) = 5
random.randint(1,10) = 9
random.uniform(1,10) = 4.2694269314139275
Original listvar = [1, 2, 3, 4, 5, 6, 99, 10]
random.choice(listvar) = 10
random.shuffle(listvar) = None
Disrupted listvar = [2, 4, 5, 1, 6, 10, 99, 3]

Process finished with exit code 0

12.4 os模块

code:

# *****************************************************************************
"""
系统接口模块 os
 os.getcwd()---获取当前的工作目录字符串,注意获取的不是当前脚本的目录,而是执行当前脚本的目录
 ---如果在当前目录子hi选哪个这个脚本文件,那么getcwd()获取的就是当前的文件目录
 ---如果把执行的目录切换到其他位置,再执行当前脚本,那么获取的就是执行这个脚本时的目录
 os.chdir()---修改当前的工作目录
 os.listdir('path')---获取当前或指定path目录中的所有项(可以是文件夹、隐藏目录)==linux中的ls -al指令和windows中的dir指令
 ---'path'的默认值为当前工作目录
 os.mkdir(文件夹路径,系统权限)---创建文件夹,不允许创建文件夹套文件夹(递归文件夹),返回值为None
 ---linux系统下的系统权限(需要的时候查一查),windows系统下不存在系统权限
 ---注意:无法使用python去创建一个比自己这个进程权限还高的文件
 os.makedirs(文件夹路径)---创建文件夹,允许创建文件套文件(递归文件夹),返回值为None
 os.rmdir(文件夹路径)---删除空文件夹,无法删除非空文件夹(会引发OsError),不能删除文件套文件空文件夹(递归文件夹),返回值为None
 os.removedirs(文件夹路径)---删除空文件夹,无法删除非空文件夹(会引发OsError),能删除文件套文件空文件夹(递归文件夹),返回值为None
 注意---mac系统下无法实现递归删除文件夹,原因是文件夹只要被使用过,那么就会生成隐藏文件 .DS_Store
 os.remove(文件路径)---删除文件,返回值为None
 os.rename(文件(夹)路径,新的文件(夹)路径+名称)---修改文件or文件夹的名字,第二个参数的默认路径为当前工作路径,返回值为None
 os.system()---执行操作系统中的命令

 os.path()---系统模块中的路径模块
 os.path.abspath()---将相对路径转化为绝对路径
 os.path.basename()---获取路径中的主体部分,就是返回路径中的最后一部分
 os.path.dirname()---获取路径中的路径部分,就是返回路径中最后一点之前的内容
 os.path.join()---连接多个路径,组成新的路径(文件路径拼接)(这里有点问题,第一个参数要求是/输入,输出的结果中连接第二个参数那里是\,感觉windows还有linux不是很兼容)
 os.path.split()---把路径拆分为路径和主体部分,返回一个由路径和主体部分组成的元组
 os.path.splitext()---拆分路径,可以拆分文件后缀名,返回由路径和后缀名组成的元组
 os.path.getsize()---获取文件大小,以字节为单位,文件不存在则引发FileNotFoundError异常
 os.path.isdir()---检测文件夹是否存在,返回bool类型
 os.path.isfile()---检测文件是否存在,返回bool类型
 os.path.exists()---检测路径(文件or文件夹)是否存在,返回bool类型
 os.path.samefile(a,b)---判断两个路径(文件 or 文件夹)是否同时指向同一个目标位置,要求两个路径都是真实存在的,返回bool类型
 os.path.getctime()---获取文件or文件夹的创建时间,文件or文件夹不存在将抛出OSError异常,返回值为纪元秒数(暂时不知道是啥嘿嘿)
 os.path.getmtime()---获取文件or文件夹的最后修改时间,文件or文件夹不存在将抛出OSError异常,返回值为纪元秒数(暂时不知道是啥嘿嘿)
 os.path.getatime()---获取文件or文件夹的最后访问时间,文件or文件夹不存在将抛出OSError异常,返回值为纪元秒数(暂时不知道是啥嘿嘿)
"""
import os

print("os*****************************************************")
print("os.chdir() and os.getcwd()*******************************************")
print(f"os.getcwd() = {os.getcwd()}")
os.chdir("D:/Prj/_PythonSelf")
print(f"os.getcwd() = {os.getcwd()}")
os.chdir("D:\Prj\_PythonSelf\Study_Basic_Grammar")
print("os.listdir()*****************************************************")
res = os.listdir('D:\Prj\_PythonSelf')
print(res)
print("os.mkdir()*****************************************************")
res = os.mkdir(r'D:\Prj\_PythonSelf\testfolder')
print(res)
print("os.makedirs()*****************************************************")
res = os.makedirs(r'D:\Prj\_PythonSelf\Jasmine\Info')
print(res)
print("os.rmdir()*****************************************************")
res = os.rmdir(r'D:\Prj\_PythonSelf\text')
print(res)
print("os.removedirs()*****************************************************")
res = os.removedirs(r'D:\Prj\_PythonSelf\lala\bba')
print(res)
print("os.remove()*****************************************************")
res = os.remove(r'D:\Prj\_PythonSelf\lili.txt')
print(res)
print("os.rename()*****************************************************")
res = os.rename(r'D:\Prj\_PythonSelf\txt','Jasmine')
print(res)
print("os.system()*****************************************************")
res = os.system('python _1Varible_Def.py')
print(res)
print("os.path.abspath()*****************************************************")
print(f"os.path.abspath('./') = {os.path.abspath('./')}")
print("os.path.basename()*****************************************************")
print(f"os.path.basename('D:/Prj/_PythonSelf/Study_Basic_Grammar') = {os.path.basename('D:/Prj/_PythonSelf/Study_Basic_Grammar')}")
print("os.path.dirname()*****************************************************")
print(f"os.path.dirname('D:/Prj/_PythonSelf/Study_Basic_Grammar') = {os.path.dirname('D:/Prj/_PythonSelf/Study_Basic_Grammar')}")
print("os.path.join()*****************************************************")
print(f"os.path.join('D:/Prj/_PythonSelf','Study_Basic_Grammar') = {os.path.join('D:/Prj/_PythonSelf','Study_Basic_Grammar')}")
print("os.path.split()*****************************************************")
print(f"os.path.split('D:/Prj/_PythonSelf/Study_Basic_Grammar') = {os.path.split('D:/Prj/_PythonSelf/Study_Basic_Grammar')}")
print("os.path.splitext()*****************************************************")
print(f"os.path.splitext('D:/Prj/_PythonSelf/Study_Basic_Grammar/textbook.md') = {os.path.splitext('D:/Prj/_PythonSelf/Study_Basic_Grammar/textbook.md')}")
print("os.path.getsize()*****************************************************")
print(f"os.path.getsize('D:/Prj/_PythonSelf/Study_Basic_Grammar/textbook.md') = {os.path.getsize('D:/Prj/_PythonSelf/Study_Basic_Grammar/textbook.md')}")
print("os.path.isdir()*****************************************************")
print(f"os.path.isdir('D:/Prj/_PythonSelf/Study_Basic_Grammar') = {os.path.isdir('D:/Prj/_PythonSelf/Study_Basic_Grammar')}")
print("os.path.isfile()*****************************************************")
print(f"os.path.isfile('D:/Prj/_PythonSelf/Study_Basic_Grammar/textbook.md') = {os.path.isfile('D:/Prj/_PythonSelf/Study_Basic_Grammar/textbook.md')}")
print("os.path.exists()*****************************************************")
print(f"os.path.exists('D:/Prj/_PythonSelf/Study_Basic_Grammar') = {os.path.exists('D:/Prj/_PythonSelf/Study_Basic_Grammar')}")
print(f"os.path.exists('D:/Prj/_PythonSelf/Study_Basic_Grammar/textbook.md') = {os.path.exists('D:/Prj/_PythonSelf/Study_Basic_Grammar/textbook.md')}")
print("os.path.samefile()*****************************************************")
print(f"os.path.samefile('D:/Prj/_PythonSelf/Study_Basic_Grammar','./') = {os.path.samefile('D:/Prj/_PythonSelf/Study_Basic_Grammar','./')}")
print("os.path.getctime()*****************************************************")
print(f"os.path.getctime('D:/Prj/_PythonSelf/Study_Basic_Grammar') = {os.path.getctime('D:/Prj/_PythonSelf/Study_Basic_Grammar')}")
print("os.path.getmtime()*****************************************************")
print(f"os.path.getmtime('D:/Prj/_PythonSelf/Study_Basic_Grammar') = {os.path.getmtime('D:/Prj/_PythonSelf/Study_Basic_Grammar')}")
print("os.path.getatime()*****************************************************")
print(f"os.path.getatime('D:/Prj/_PythonSelf/Study_Basic_Grammar') = {os.path.getatime('D:/Prj/_PythonSelf/Study_Basic_Grammar')}")

运行结果:

os.path.abspath()*****************************************************
os.path.abspath('./') = D:\Prj\_PythonSelf\Study_Basic_Grammar
os.path.basename()*****************************************************
os.path.basename('D:/Prj/_PythonSelf/Study_Basic_Grammar') = Study_Basic_Grammar
os.path.dirname()*****************************************************
os.path.dirname('D:/Prj/_PythonSelf/Study_Basic_Grammar') = D:/Prj/_PythonSelf
os.path.join()*****************************************************
os.path.join('D:/Prj/_PythonSelf','Study_Basic_Grammar') = D:/Prj/_PythonSelf\Study_Basic_Grammar
os.path.split()*****************************************************
os.path.split('D:/Prj/_PythonSelf/Study_Basic_Grammar') = ('D:/Prj/_PythonSelf', 'Study_Basic_Grammar')
os.path.splitext()*****************************************************
os.path.splitext('D:/Prj/_PythonSelf/Study_Basic_Grammar/textbook.md') = ('D:/Prj/_PythonSelf/Study_Basic_Grammar/textbook', '.md')
os.path.getsize()*****************************************************
os.path.getsize('D:/Prj/_PythonSelf/Study_Basic_Grammar/textbook.md') = 176996
os.path.isdir()*****************************************************
os.path.isdir('D:/Prj/_PythonSelf/Study_Basic_Grammar') = True
os.path.isfile()*****************************************************
os.path.isfile('D:/Prj/_PythonSelf/Study_Basic_Grammar/textbook.md') = True
os.path.exists()*****************************************************
os.path.exists('D:/Prj/_PythonSelf/Study_Basic_Grammar') = True
os.path.exists('D:/Prj/_PythonSelf/Study_Basic_Grammar/textbook.md') = True
os.path.samefile()*****************************************************
os.path.samefile('D:/Prj/_PythonSelf/Study_Basic_Grammar','./') = True
os.path.getctime()*****************************************************
os.path.getctime('D:/Prj/_PythonSelf/Study_Basic_Grammar') = 1644155667.5739567
os.path.getmtime()*****************************************************
os.path.getmtime('D:/Prj/_PythonSelf/Study_Basic_Grammar') = 1647142353.3566964
os.path.getatime()*****************************************************
os.path.getatime('D:/Prj/_PythonSelf/Study_Basic_Grammar') = 1647142353.4025595

Process finished with exit code 0

12.5 高级文件操作模块

code:

# *************************************************************
"""
高级文件操作模块
    shutil.copy(来源路径,目标路径)---把一个文件拷贝到指定的目录中,还可以更改文件名
    shutil.copy2(来源路径,目标路径)---把一个文件拷贝到指定的目录中,还可以更改文件名,同时拷贝了时间和权限等
    shutil.copyfile(来源路径,目标路径)---打开文件,读取内容,写入到新的文件中
    shutil.copytree(来源路径,目标路径)---可以把整个目录结构全部拷贝到指定目录中,要求目标路径必须不存在
    shutil.rmtree()---删除整个文件夹
    shutil.move()---移动文件or文件夹到指定目录,可以更改文件or文件夹名称
"""
import shutil

运行结果:

没有结果嘿嘿

12.6 压缩和解压缩文件

code:

# *****************************************************************
"""
zipfile:
    压缩和解压缩---加解密不一定能够高效(因为不是c)
    zipfile.ZipFile(生成的压缩包名,模式,压缩模式)---这是一个类,可以实现这个类然后呢压缩文件或解压缩文件。
    ZipFile.write(文件名)---将文件加入 生成的压缩包 中
    ZipFile.extractall()---提取压缩包中的所有文件
shutil
    shutil.make_archive(生成的压缩文件名,压缩格式,要压缩的文件Or文件夹路径)
"""
import zipfile
import os
import shutil
# 将文件加入压缩包中
with zipfile.ZipFile('spam.zip', 'w', zipfile.ZIP_DEFLATED) as myzip:
    myzip.write('1.txt')
    myzip.write('blacklist.txt')
    myzip.write('data.txt')
    myzip.write('userdata.txt')
# 将文件夹中的全部文件都加入压缩包中---方法1,使用zipfile
with zipfile.ZipFile('spam1.zip', 'w', zipfile.ZIP_DEFLATED) as myzip:
    res = os.listdir('./')
    for i in res:
        myzip.write(i)
# 将文件夹中的全部文件都加入压缩包中---方法2,使用shutil
shutil.make_archive('notebook','zip','./')
# 解压缩---提取压缩包中的全部文件
with zipfile.ZipFile('spam.zip', 'r', zipfile.ZIP_DEFLATED) as myzip:
    myzip.extractall()

运行结果:

嘿嘿,自己运行去吧哈哈哈

12.7 时间模块

指令 含意
%a 本地化的缩写星期中每日的名称。
%A 本地化的星期中每日的完整名称。
%b 本地化的月缩写名称。
%B 本地化的月完整名称。
%c 本地化的适当日期和时间表示。
%d 十进制数 [01,31] 表示的月中日。
%H 十进制数 [00,23] 表示的小时(24小时制)。
%I 十进制数 [01,12] 表示的小时(12小时制)。
%j 十进制数 [001,366] 表示的年中日。
%m 十进制数 [01,12] 表示的月。
%M 十进制数 [00,59] 表示的分钟。
%p 本地化的 AM 或 PM 。
%S 十进制数 [00,61] 表示的秒。
%U 十进制数 [00,53] 表示的一年中的周数(星期日作为一周的第一天)。 在第一个星期日之前的新年中的所有日子都被认为是在第 0 周。
%w 十进制数 [0(星期日),6] 表示的周中日。
%W 十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天)。 在第一个星期一之前的新年中的所有日子被认为是在第 0 周。
%x 本地化的适当日期表示。
%X 本地化的适当时间表示。
%y 十进制数 [00,99] 表示的没有世纪的年份。
%Y 十进制数表示的带世纪的年份。
%z 时区偏移量,表示与UTC/GMT的正或负时间差,形式为+HHMM或-HHMM,其中H表示十进制小时数字,M表示十进制分钟数字[-23:59,+23:59]。
%Z 时区名称(如果不存在时区,则不包含字符)。弃用。
%% 字面的 '%' 字符。

code:

# ********************************************************
"""
time:
    time.time()---默认获取当前系统的时间戳,返回一个浮点数。
        什么是时间戳?表示从1970年1月1日0时0分0秒到现在的一个秒数,目前可以计算到2038年。
    time.ctime(时间戳)---默认获取当前系统时间,返回一个时间字符串;指定时间戳时,返回该时间戳的时间字符串。
    time.localtime(时间戳)---默认获取当前系统时间,返回一个时间元组。指定时间戳时,返回该时间戳的时间元组。
    time.strftime()---格式化时间,年-月-日 时:分:秒 星期几
    time.sleep(second)---时间休眠,暂停second秒当前线程的执行
    time.perf_counter()---计算程序的运行时间
"""
import time
print("获取当前时间戳、时间元组、时间字符串*********************************************************")
print(f"time.time() = {time.time()}")  # time.time() = 1647224330.9220889
print(f"time.ctime() = {time.ctime()}")  # time.ctime() = Mon Mar 14 10:19:26 2022
print(f"time.localtime() = {time.localtime()}")  # time.localtime() = time.struct_time(tm_year=2022, tm_mon=3, tm_mday=14, tm_hour=10, tm_min=28, tm_sec=17, tm_wday=0, tm_yday=73, tm_isdst=0)
# 将给定时间戳转换为时间字符串和时间元组
print("将给定时间戳转换为时间字符串和时间元组*********************************************************")
timenow = 1547224897.4645998
print(f"time.ctime(timenow) = {time.ctime(timenow)}")  # time.ctime(timenow) = Sat Jan 12 00:41:37 2019
print(f"time.localtime(timenow) = {time.localtime(timenow)}")  # time.localtime(timenow) = time.struct_time(tm_year=2019, tm_mon=1, tm_mday=12, tm_hour=0, tm_min=41, tm_sec=37, tm_wday=5, tm_yday=12, tm_isdst=0)
# 使用localtime方法获取的时间元组,如何格式化为 XXXX年XX月XX日 时:分:秒
print("格式化时间元组为常用格式*********************************************************************")
res = time.localtime()
print(f"{res.tm_year}年{res.tm_mon}月{res.tm_mday}日 {res.tm_hour}:{res.tm_min}:{res.tm_sec} 星期{res.tm_wday+1}")
print(f"time.strftime('%Y%m%d%H%M%S%w') = {time.strftime('%Y-%m-%d %H:%M:%S %w')}")
# 计算代码段运行时间
print("计算代码段运行时间**************************************************************************")
start = time.perf_counter()
for i in range(10000000):
    pass
end = time.perf_counter()
print(f"end-start = {end-start}")
time.sleep(3)  # 就会发现程序结束地慢了一些,就是睡眠了嘿嘿

运行结果:

获取当前时间戳、时间元组、时间字符串*********************************************************
time.time() = 1647225868.144884
time.ctime() = Mon Mar 14 10:44:28 2022
time.localtime() = time.struct_time(tm_year=2022, tm_mon=3, tm_mday=14, tm_hour=10, tm_min=44, tm_sec=28, tm_wday=0, tm_yday=73, tm_isdst=0)
将给定时间戳转换为时间字符串和时间元组*********************************************************
time.ctime(timenow) = Sat Jan 12 00:41:37 2019
time.localtime(timenow) = time.struct_time(tm_year=2019, tm_mon=1, tm_mday=12, tm_hour=0, tm_min=41, tm_sec=37, tm_wday=5, tm_yday=12, tm_isdst=0)
格式化时间元组为常用格式*********************************************************************
2022年3月14日 10:44:28 星期1
time.strftime('%Y%m%d%H%M%S%w') = 2022-03-14 10:44:28 1
计算代码段运行时间**************************************************************************
end-start = 0.3096816

Process finished with exit code 0

12.8 日历模块

code:

# ***************************************************
"""
日历模块:
    calendar.monthrange()---获取指定年份和月份的数据(第一天时周几,月份的天数)
"""
import calendar
import time,os

def showmonth(year, month):
    res = calendar.monthrange(year, month)
    days = res[1]  # 当前月份的天数
    w = res[0]  # 当前月份第一天是星期几
    print(f"*****{year}年{month}月的日历信息*****")
    print(" 一  二   三  四   五  六  日 ")
    print("***************************")
    d = 1
    print("    " * w, end="")
    while d <= days:
        print(' {:0>2d} '.format(d), end="")
        if (d + w) % 7 == 0:
            print("\n", end="")
        d += 1
    print("\n***************************")

dd = time.localtime()
year = dd.tm_year
month = dd.tm_mon
showmonth(year,month)
while True:
    print("    <上一月       下一月>    ")
    res = input("请输入< or >选择:")
    os.system('cls')
    if res == '<':
        month -= 1
    elif res == '>':
        month += 1
    else:
        month = month
    if month == 0:
        year -= 1
        month = 12
    elif month == 13:
        year += 1
        month = 1
    showmonth(year, month)

运行结果:

*****2022年1月的日历信息*****
 一  二   三  四   五  六  日 
***************************
                     01  02 
 03  04  05  06  07  08  09 
 10  11  12  13  14  15  16 
 17  18  19  20  21  22  23 
 24  25  26  27  28  29  30 
 31 
***************************
    <上一月       下一月>    
请输入< or >选择:<
*****2021年12月的日历信息*****
 一  二   三  四   五  六  日 
***************************
         01  02  03  04  05 
 06  07  08  09  10  11  12 
 13  14  15  16  17  18  19 
 20  21  22  23  24  25  26 
 27  28  29  30  31 
***************************
    <上一月       下一月>    
请输入< or >选择:>
*****2022年1月的日历信息*****
 一  二   三  四   五  六  日 
***************************
                     01  02 
 03  04  05  06  07  08  09 
 10  11  12  13  14  15  16 
 17  18  19  20  21  22  23 
 24  25  26  27  28  29  30 
 31 
***************************
    <上一月       下一月>    
请输入< or >选择:(这里可以一直循环下去噢嘿嘿)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容