24 模块
-------序列化
一.什么是模块 模块:py文件就是一个模块.
二.模块的分类:
(1)内置模块 (登录模块,时间模块,sys模块,os模块)
(2)扩展模块 (itchat 微信有关,爬虫,beautiful soup 网址(http://pypi.org)
(3)自定义模块
三.序列化模块及分类.
1创造一个序列化字符串
2.序列化模块分类
(1).json 适用于不同语言之间,但可支持数据类型有限,str,int,list,dict,bool 作用:方便数据传输 .
(2).pickle 只用于python语言之间的传输,可支持python所有的数据类型
(3)shelve 只是python的一个小工具(文件方面)
3.json 的用法
(1).json的意义 a.数据通过网络发送给别人;
b.写入文件也用到json
(2)dumps,loads (将数据用于网络传输 ; 多个数据写入一个文件)
网络传输:
import json
dic={"alex":["男","中国",1000]}
ret=json.dumps(dic)
ret1=json.dumps(dic,ensure_ascii=False)
print(ret,type(ret)) # {"alex": ["\u7537", "\u4e2d\u56fd", 1000]} <class 'str'>
print(ret1,type(ret1)) #{"alex": ["男", "中国", 1000]} <class 'str'>
ret2=json.loads(ret)
print(ret2,type(ret2)) # {'alex': ['男', '中国', 1000]} <class 'dict'>
文件操作: 多个数据写入一个文件
import json
dic={"alex":["男","中国",1000]}
l1=["包宝宝","包大宝宝","包小宝宝","包老宝宝","真的很好看"]
dic1 = {"alex": ('women','women','老女人')}
f=open("json1",encoding="utf-8",mode="w")
s1=json.dumps(dic,ensure_ascii=False)
f.write(s1+"\n")
s2=json.dumps(dic1,ensure_ascii=False)
f.write(s2+"\n")
s3=json.dumps(l1,ensure_ascii=False)
f.write(s3+"\n")
f.close() # 写文件
f1=open("json1",encoding="utf-8") # 读文件
for line in f1: #{'alex': ['男', '中国', 1000]} <class 'dict'>
ret=json.loads(line) #{'alex': ['women', 'women', '老女人']} <class 'dict'>
print(ret,type(ret)) # ['包宝宝', '包大宝宝', '包小宝宝', '包老宝宝', '真的很好看'] <class 'list'> (3)dump,load (单个数据写入一个文件)
import json
dict={'alex':["男",1000,"中国"]}
f=open("json1",encoding="utf-8",mode="a")
json.dump(dict,f,ensure_ascii=False) # 写文件
f.close()
f1=open("json1",encoding="utf-8") # 读文件
ret=json.load(f1)
print(ret,type(ret)) # {'alex': ['男', 1000, '中国']} <class 'dict'>
(4).json的缺点,将数据写入文件时只能写一个,如果将多个序列化字符串写入文件,反序列化会出错.(dump.load)
(5).json的其他参数
sort_keys=True( 按首字母的ascii码的位置排序)
ensure_ascii 显示中文
indent=2 key 的缩进为2
separators=(",",":") "," 键值对之间的分割符,":"键与值之间的分割符.
(6).特别注意: 字典序列化为字符串,key 必须是字符串类型,数字会变为字符串.
4.pickle 的用法
(1)dumps loads 用于网络传输
import pickle
dic={"包宝宝":["包大宝宝","包小宝宝","包老宝宝","真的很好看"]}
ret=pickle.dumps(dic)
print(ret,type(ret)) # <class 'bytes'>
ret2=pickle.loads(ret)
print(ret2,type(ret2)) # {'包宝宝': ['包大宝宝', '包小宝宝', '包老宝宝', '真的很好看']} <class 'dict'> (2)dump load 文件操作
单个数据写入一个文件:
import pickle
dic={"包宝宝":["包大宝宝","包小宝宝","包老宝宝","真的很好看"]}
f=open("pickle",mode="wb")
pickle.dump(dic,f)
f.close()
f1=open("pickle",mode="rb")
ret=pickle.load(f1)
print(ret,type(ret)) #{'包宝宝': ['包大宝宝', '包小宝宝', '包老宝宝', '真的很好看']} <class 'dict'>
多个数据写入一个文件:
import pickle
dic={"包宝宝":["包大宝宝","包小宝宝","包老宝宝","真的很好看"]}
dic1={'alex':["男",1000,"中国"]}
dic2 = {"alex1": ('women','women','老女人')}
f1=open("pickle1",mode="wb")
pickle.dump(dic,f1)
pickle.dump(dic1,f1)
pickle.dump(dic2,f1)
f1.close()
f2=open("pickle1",mode="rb")
# print(pickle.load(f2)) # {'包宝宝': ['包大宝宝', '包小宝宝', '包老宝宝', '真的很好看']}
# print(pickle.load(f2)) # {'alex': ['男', 1000, '中国']}
# print(pickle.load(f2)) # {'alex1': ('women', 'women', '老女人')}
while True:
try:
print(pickle.load(f2))
except EOFError:
break
5.shelve 的用法 与文件相关,只能在python中用.
给文件写入一个键值对; 并输出键值对的值
import shelve
f = shelve.open('shelve_file')
f['key'] = {'int':10, 'float':9.5, 'string':'Sample data'} #直接对文件句柄操作,就可以存入数据
f.close()
f1 = shelve.open('shelve_file')
existing=f1["key"] #{'int': 10, 'float': 9.5, 'string': 'Sample data'}
f1.close()
print(existing)
#给key的值(字典)添加一个键值对.
import shelve
f2 = shelve.open('shelve_file',writeback=True) # writeback允许给文件加值
f2['key']['new_value'] = 'this was not here before'
print(f2['key'])
f2.close()

python全栈开发 * 24 知识点汇总 * 180705的更多相关文章

  1. python全栈开发 * 10知识点汇总 * 180612

    10 函数进阶 知识点汇总 一.动态参数 形参的第三种1.动态接收位置传参 表达:*args (在参数位置编写 * 表⽰接收任意内容) (1)动态位置参数def eat(*args): print(a ...

  2. python全栈开发 * 32知识点汇总 * 180717

    32 网络编程 (一)一.架构 定义:程序员开发的一种模式. 分类: C/S 架构 C/S即:Client与Server , 客户端/ 服务器模式 . 缺点 : 冗余 B/S 架构 Browser与S ...

  3. python全栈开发 * 12 知识点汇总 * 180530

    12 知识点总结 装饰器进阶 ⼀. 通⽤装饰器的回顾1.开闭原则: 对增加功能开放. 对修改代码封闭2.装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能3.通⽤装饰器的写法:def wrap ...

  4. python全栈开发 * 01知识点汇总 * 180530

    一 python简介. 1.创始人:  吉多 .范罗苏姆  \   (Guido van Rossum). 2.时间  :  1989年. 3.主要应用领域  :  云计算 \  WEB开发  \   ...

  5. python全栈开发 * 27知识点汇总 * 180710

    27   time  os  sys  模块 time 模块 一.表示时间的三种方式 时间戳(timestamp), 元组(struct_time),格式化时间字符串(Format string) 小 ...

  6. python全栈开发 * 26知识点汇总 * 180709

    26 logging collections random 模块 一.logging低配:日志不能写入文件与显示同时进行 import logging logging.basicConfig(leve ...

  7. python全栈开发* 02 知识点汇总 * 180531

    运算符和编码 一  格式化输出 1  .输入  name ,age , job , hobby. 输出  :   ---------------  info of Mary  ------------ ...

  8. python全栈开发 * 36知识点汇总 * 180721

    36 操作系统的发展史 进程一.手工操作--穿孔卡片 1.内容: 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制 台开关启动程序针对 ...

  9. python全栈开发 * 31知识点汇总 * 180716

    31 模块和包一.模块(一)模块的种类:内置模块,自定义模块,扩展模块第三方模块(二)自定义模块 1.模块的创建 : 新建一个py文件. 2.模块名 : 模块名需要符合变量的命名规范. 3.模块的导入 ...

随机推荐

  1. EntityFramework.Extended 对EF进行扩展

    前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...

  2. ECMAScript各版本简介及特性

    术语 ECMAScript Sun(现在的Oracle)公司持有着“Java”和“JavaScript”的商标.这就让微软不得不把自己的JavaScript方言称之为“JScript”.然后,在这门语 ...

  3. 构建自己的 Smart Life 私有云(二)-> 连通 IFTTT & Slack

    博客搬迁至https://blog.wangjiegulu.com RSS订阅:https://blog.wangjiegulu.com/feed.xml 原文链接:https://blog.wang ...

  4. 使用MiniProfiler调试ASP.NET web api项目性能

    本质上,集成Miniprofiler可以分解为三个问题: 怎样监测一个WebApi项目的性能. 将性能分析监测信息从后端发送到UI. 在UI显示分析监测结果. 首先安装Miniprofiler,Min ...

  5. Android设备真实DPI与系统标示DPI——ldpi/mdpi/hdpi/xhdpi/xxhdpi/xxxhdpi

    1.设备真实DPI与系统标示DPI 2.drawable允许的标示DPI值         drawable文件的合法名称如下: 3.如何验证         Demo如下,建立不同dpi的drawa ...

  6. 试试SQLServer 2014的内存优化表

    SQL Server2014存储引擎:行存储引擎,列存储引擎,内存引擎 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据 ...

  7. iOS开发之duplicate symbols for architecture x86_64错误

    [主要内容:] 1. 错误提示 2. 分析错误原因 3. 解决问题办法 一.错误提示   在我们写代码过程中可能会经常遇到这样一个错误: <span style="font-size: ...

  8. sqoop 测试 --hive-delims-replacement 参数

    在hive的官方文档中给的例子中字段分隔符是\001,但是在他的API文档中--hive-delims-replacement ,--hive-drop-import-delims   参数中会处理的 ...

  9. C语言 · 8皇后问题改编

    8皇后问题(改编) 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋盘. 输出格式 所能得到的最大数字和 样例输入 1 2 3 4 5 ...

  10. Win8.1,windows10部署 .NET Framework 3.5 安装方式汇总

    .NET Framework,操作系统安装过程中默认安装 .NET Framework 4.5.1.如果程序需要.NET Framework 3.5支持,将自动启用相关功能. 注意: 1. .NET ...