CSIC_716_20191118【常用模块的用法 Json、pickle、collections、openpyxl】
序列化模块
序列化:将python或其他语言中的数据类型,转变成字符串类型。
python中的八大数据类型回顾:int float str list tuple dict set bool
反序列化:将字符串转变成其他数据类型。
json模块
json的跨平台性较好,是一个第三方模块。
在json中,所有的字符串都是双引号
元组通过json转变后,变成了列表,后续再解析的时候需要进行强制类型转化,才能变成元组
set是不支持转成json的
用法中的两点注意:dump(要存的内容,文件句柄),load(文件句柄)
# _*_ coding: gbk _*_
# @Author: Wonder
import json
str1 = '中国abc'
list1 = [1, 2, 3, 4]
dict1 = {'key': 'values', 'name': 'jack'}
tuple1 = ('a', 'b', 'c', 'd')
set1 = {1, 2, 3, 4, 5, 6, 7}
str_json = json.dumps(str1, ensure_ascii=False)
print(str_json) # "中国abc"
tuple_obj = json.dumps(tuple1, ensure_ascii=False)
print(tuple_obj) # ["a", "b", "c", "d"]
#
set_obj = json.dumps(set1, ensure_ascii=False)
print(set_obj) # TypeError: Object of type set is not JSON serializable
dict1_obj = json.dumps(dict1)
print(dict1_obj) # {"key": "values", "name": "jack"}
# 反序列化
tuple_ss = json.loads(tuple_obj)
real_tuple = tuple(tuple_ss) # 将列表转为元组
print(real_tuple) # ('a', 'b', 'c', 'd')
# 在打开文件的时候,可以通过dump和load直接操作文件
tuple1 = ('a', 'm', 'c', 'd')
f = open('user.json', 'w', encoding='utf-8')
t_obj = json.dumps(tuple1)
f.write(t_obj)
f.close()
#上述操作等价于用dump直接存文件
df = open('d_user.json', 'w', encoding='utf-8')
json.dump(tuple1, df) #注意参数先写要写的内容,再写句柄f
json.dump(dict1, df) #将内容分成两次往文件中存,会出现错误
df.close()
#直接用load取文件即可
df = open('d_user.json', 'r', encoding='utf-8')
ss = json.load(df)
print(ss) # {'key': 'values', 'name': 'jack'}
df.close()
pickle模块
pickle模块是一个python自带的序列化模块
优点:可以支持python中所有的数据类型,也可以存bytes类型的数据。
缺点:只能在python平台中使用,局限性较大。
# 读桌面的图片文件
with open(r'C:\Users\wonder\Desktop\picture.JPG', 'rb') as f:
python_photo = f.read()
print(python_photo) # 一串二进制的字节流
print(type(python_photo)) # bytes
# 存 pickle.dump
with open('teacher22.pickle', 'wb') as wf:
pickle.dump(python_photo, wf) # 存文件
# 取 pickle.load
with open('teacher22.pickle', 'rb') as rf:
ss = pickle.load(rf) # 读文件
print(ss) # 一串二进制的字节流
collections模块
collections模块提供了python八大数据类型以外的数据类型。主要介绍了两个模块:
具名元组 namedtuple 应用场景,坐标。
具名元组 namedtuple 的定义方式有三种
# _*_ coding: gbk _*_
# @Author: Wonder
from collections import namedtuple
# 定义方式 namedtuple(构造器,可迭代对象),可迭代对象可以是列表,空格分开的字符串,元组
# 第一种,
np1 = namedtuple('坐标1', 'xin yin') # 在字符串中以空格区分元素个数
np2 = namedtuple('坐标2', ['xx', 'yy'])
np3 = namedtuple('坐标3', ('x', 'y'))
ss1 = np1(2, 3) # 传参数的个数,要和可迭代对象中的个数相同
ss2 = np2(4, 5)
ss3 = np3(6, 7)
print(ss1) # 坐标1(x=2, y=3)
print(ss2) # 坐标2(xx=4, yy=5)
print(ss3) # 坐标3(x=6, y=7)
有序字典 OrderedDict
from collections import OrderedDict
# OrderedDict与python中自带的dict定义方式一样,但他是一个有序的字典。即使两个OrderDict字典中键值对一样,在判断是否相等时也是False
or_dict = OrderedDict({'key1': 'value1', 'key2': 'value2'})
# 取值也和dict的取值方式一样
ss = or_dict.get('key2')
print(ss)
for k1, v1 in or_dict.items():
print(k1, v1)
for v1 in or_dict.values():
print(v1)
补充:向OrderDict中增加新的键值对时,可以指定增加在开头还是结尾。
or_dict = OrderedDict({'key1': 'value1', 'key2': 'value2', 'key3': 'value3'})
print(or_dict) # OrderedDict([('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')])
or_dict.move_to_end('key2', last=False) # last=True是默认参数,移动到最右边,此处已经设置为False
print(or_dict) # OrderedDict([('key2', 'value2'), ('key1', 'value1'), ('key3', 'value3')])
or_dict.popitem(last=False) #last=True 是默认参数的,弹出最右的元素,此处已经设置为False
print(or_dict) # OrderedDict([('key1', 'value1'), ('key3', 'value3')])
有序列表也可以实现FIFO(先进先出)
openpyxl模块
保存一个Excel文件
# _*_ coding: gbk _*_
# @Author: Wonder
# 写入Excel文件
from openpyxl import Workbook
wb_obj = Workbook() # 对象,最后以此wb_obj生成Excel文件
#下面的操作都是基于wb_obj对象进行
sheet1= wb_obj.create_sheet('python创建1', 0) # 创建工作表并命名和指定是第几张)
sheet2 = wb_obj.create_sheet('python创建2', 1) # title和第几页index
sheet1.title = 'py01修改' # 修改名字
sheet1['A5'] = 100
sheet1['D5'] = 5
sheet1['B5'] = '=SUM(A5+D5)' # Excel的函数
wb_obj.save('python创建的表格.xlsx') # 通过最初创建的对象,保存生成文件。在此指定文件名
读取一个Excel文件,修改数据并另存为新文件
# 读取Excel数据,修改,保存
from openpyxl import load_workbook
from openpyxl import Workbook
#取到文件
wb_load_obj = load_workbook('python创建的表格.xlsx')
#取到工作表
sheeeet = wb_load_obj['python创建2']
#取到工作表中的值
c7 = sheeeet['C7'].value
print(c7)
# 修改指定的值
sheeeet['C7'] = 7777
#再存档
wb_load_obj.save('读取修改储存副本.xlsx')
CSIC_716_20191118【常用模块的用法 Json、pickle、collections、openpyxl】的更多相关文章
- 常用模块(random,os,json,pickle,shelve)
常用模块(random,os,json,pickle,shelve) random import random print(random.random()) # 0-1之间的小数 print(rand ...
- day16 常用模块 sys os json pickle
知识点 os:和操作系统相关sys:和解释器相关 json:和操作JSON(一种数据交换格式)相关pickle:序列化 hashlib:加密算法Collections:集合类型 ...
- python基础语法12 内置模块 json,pickle,collections,openpyxl模块
json模块 json模块: 是一个序列化模块. json: 是一个 “第三方” 的特殊数据格式. 可以将python数据类型 ----> json数据格式 ----> 字符串 ----& ...
- Python全栈之路----常用模块----序列化(json&pickle&shelve)模块详解
把内存数据转成字符,叫序列化:把字符转成内存数据类型,叫反序列化. Json模块 Json模块提供了四个功能:序列化:dumps.dump:反序列化:loads.load. import json d ...
- python常用模块(1):collections模块和re模块(正则表达式详解)
从今天开始我们就要开始学习python的模块,今天先介绍两个常用模块collections和re模块.还有非常重要的正则表达式,今天学习的正则表达式需要记忆的东西非常多,希望大家可以认真记忆.按常理来 ...
- python模块概况,json/pickle,time/datetime,logging
参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html http://www.cnblogs.com/alex3714/articles/51 ...
- python 模块二(os,json,pickle)
#################################总结##################### os常用 os.makedirs('baby/安哥拉/特斯拉/黄晓明') os.mkd ...
- Python全栈开发记录_第八篇(模块收尾工作 json & pickle & shelve & xml)
由于上一篇篇幅较大,留下的这一点内容就想在这里说一下,顺便有个小练习给大家一起玩玩,首先来学习json 和 pickle. 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过, ...
- ansible常用模块即用法
Linux 中,我们可以通过 ansible-doc -l 命令查看到当前 ansible 都支持哪些模块,通过 ansible-doc -s 模块名 又可以查看该模块有哪些参数可以使用. 下面 ...
随机推荐
- 2019ICPC南京网络赛A The beautiful values of the palace
题意:蛇形填数超大版本,需要求出一些给定坐标的值的数位和,然后q次询问,一个矩形区域内值的和是多少 解题思路:二维偏序前缀和的经典题 二维偏序:求(x,y)左下角点的个数,思路是对x,y升序排序,用树 ...
- Docker搭建 oracle
1-1.docker run -d -p 11521:1521 --name sf2_oracle11g 镜像ID # -p:端口映射,此处映射主机端口 1-2.查看启动 docker logs - ...
- 提供免费可商用的优秀背景视频素材——COVERR
现在经常看到很多网站都是贴近更现代化的设计,首页都会放置跟网站内容相关的视频短片作为背景,不用按下播放按钮,就有动态显示效果,跟以往静态图片相较下更动态.更有活力,对网站的视觉体验有一定的提升作用.但 ...
- 原型对象(JS中的父类)
原型 prototype 我们所创建的每一个函数,解析器都会向函数中添加 一个属性prototype ,这个属性对应的对象就是我们所谓的原型对象 判断函数中是否含有prototype属性,有则返回 ...
- C:\Windows\System32\drivers\etc中的hosts文件
这个文件是根据TCP/IP for Windows 的标准来工作的,它的作用是包含IP地址和Host name(主机名)的映射关系,是一个映射IP地址和Host name(主机名)的规定,规定要求每段 ...
- vue App项目 首页
1. 下载 npm i mint-ui -S 2. 引入 import MintUI from 'mint-ui' import 'mint-ui/lib/style.css' Vue.use(Min ...
- Python 封装一个函数,查找文字字符串数字英文下标
def abc(str,data): count = [] numMax = 0 for a in range(len(str)): if a == 0: temp = str.find(data, ...
- Batch - attrib 命令
原文地址:CMD中使用attrib命令设置文件只读.隐藏属性详解 本文介绍一个cmd下的一个attrib.exe的小程序,它可以用来设置文件的属性.我们知道文件的属性有只读.隐藏.系统.存档和无内容索 ...
- 6367. 【NOIP2019模拟2019.9.25】工厂
题目 题目大意 给你一堆区间,将这些区间分成特定的几个集合,使得每个集合中的所有区间的并不为空. 求最大的每组区间的交的长度之和. 思考历程 一开始就认为这绝对是\(DP\)-- 试着找一些性质,结果 ...
- css 布局,过渡
做了一个小案例,关于我们内边距的处理的,然后再加上一些过渡效果 效果: 具体实现重点加上这里: 具体代码实现: CSS部分: <style> #container{ border:2px ...