json模块
# json模块是一个序列化模块。
- 是’第三方‘的数据格式
ps:1、元组在序列化后,实际在json中的存储格式是列表
2、set集合类型不能被json序列化
# 序列化:在各类编程语言中,数据在内存中的存储位置是零散的,比如字典的映射关系,是无序的,想要保存这样的数据类型,直接保存是很麻烦的。序列化其实就是将数据类型转化为字符串,因为字符串在存储的时候是连续的一块空间。
# 反序列化:就是分析字符串,将其从字符串转化成其原属的数据类型。
1、为什么要使用json模块
# 为了让各编程语言实现数据胡同
# 各类编程语言都有其固有的数据结构,在内存中的存储可能都不一样,但是序列化后的语法格式可能是一样的,一样的语法格式,可以经过各编程语言的分析,转化为其自己的数据类型
2、使用方式
import json
my_dict = {
'user': 'yyh123',
'pwd': '1234',
'flow': [],
'balance': 0,
}
# dumps将数据对象转换为(json)字符串
res = json.dumps(my_dict)
with open(f'{my_dict["user"]}.json', 'w', encoding='utf-8')as f:
f.write(res)
# loads将(json)字符串转化为数据对象
with open(f'{my_dict["user"]}.json', 'r', encoding='utf-8')as f:
res = f.read()
print(json.loads(res))
# dump比dumps多传入一个参数---文件句柄
with open(f'{my_dict["user"]}.json', 'w', encoding='utf-8')as f:
json.dump(my_dict, f)
# load比loads多传入一个参数---文件句柄
with open(f'{my_dict["user"]}.json', 'r', encoding='utf-8')as f:
res = json.load(f)
print(res)
pickle模块
# pickle模块是python独有的,自带的序列化模块
# 优点:
- 可以将python的任意数据类型序列化
- 可以直接存‘bytes’类型,存取速度快
#缺点:
- 只能支持python使用,不能跨平台。(致命缺陷)
1、使用方法:
import pickle
my_set = {1, 2, 3, 3, 4, 4, 5, 6, 8}
res = pickle.dumps(my_set) # res ==> 字节类型
with open('test.pickle','wb')as f:
f.write(res)
with open('test.pickle','rb')as f:
res = f.read()
print(pickle.loads(res))
# load与dump方法与json模块一致
collections模块
# python默认的八大数据类型:
- 整形
- 浮点型
- 布尔型
- 字符串
- 列表
- 字典
- 集合
- 元组
# collections模块提供八大数据类型之外的数据类型。如:
- 具名元组
- 有序字典
from collections import OrderedDict
from collections import namedtuple
my_nt = namedtuple('空间坐标', ['x', 'y', 'z']) # 自定义一个NAMED元组类
location = my_nt(300, 200, 150) # 实例化刚定义的元组类,返回一个对象
print(my_nt)
print(location)
PlayCard = namedtuple('Cards', ['pattern', 'figure'])
card_1 = PlayCard('Heart', 'A')
card_2 = PlayCard('Spade', 'K')
card_3 = PlayCard('Club', 'Q')
card_4 = PlayCard('Diamond', 'J')
my_list = [card_1, card_2, card_3, card_4]
print(card_1)
print(card_2)
print(card_3)
print(card_4)
print(my_list)
openpyxl模块
# openpyxl模块是第三方库
- 可以对Excle表格进行数据操作
# 写入数据
import openpyxl
# openpyxl是第三方模块需要pip下载。
# 清华源:https://pypi.tuna.tsinghua.edu.cn/simple
# 写入数据
my_workbook = openpyxl.Workbook()
my_sheet1 = my_workbook.create_sheet('Sheet1', 1)
my_sheet2 = my_workbook.create_sheet('Sheet2', 2)
# 更改sheet工资表名字
my_sheet1.title = 'Sheet1_changed'
print(my_workbook.get_sheet_names())
# 对my_sheet1进行数据操作
# 写入行
my_sheet1.append([1, 2, 3, 4, 5, 6])
my_sheet1.insert_cols(3,2)
# 指定单元格写入
my_sheet1['A10'] = 'yyh'
my_sheet1.append([1, 2, 3, 4, 5, 6])
my_workbook.save('test.xlsx')
# 加载excle修改保存
my_workbook = openpyxl.load_workbook('test.xlsx')
my_sheet = my_workbook.get_sheet_by_name('Sheet1_changed')
print(my_sheet.cell(10,1).value)
my_sheet['A10'].value = 20
print(my_sheet['A10'].value)
my_workbook.save('test.xlsx')