前言

文件只能存储字符串、二进制,若把内存的数据对象存到硬盘   从硬盘里读取数据,里面不止是字符串的类型,因此用到了json and pickle 序列化

json序列化

作用:用于不同语言进行的数据交互,json默认只能处理简单化的数据类型:字典、列表、字符串。为何只能处理简单的数据类型?因为java里的类和pyhton的类完全不一样,定义、特性等

文件只能存储字符串、二进制,例如将数据字典的数据类型写入文件,报错

按之前学过的知识对文件序列化

 info = {
"name":"Mike",
"age":16
}
f = open("json1","w",encoding = "utf-8")
f.write(info)
f.close()
结果:
Traceback (most recent call last):
File "E:/python_3.5/second/json模块/json1.py", line 6, in <module>
f.write(info)
TypeError: write() argument must be str, not dict

数据类型为字符串已存入文件

 info = {
"name":"Mike",
"age":16
}
f = open("json1","w",encoding = "utf-8")
f.write(str(info))
f.close()
写入的json1文件
{'age': 16, 'name': 'Mike'}

用json.dumps()序列化

 import json
info = {
"name":"Mike",
"age":16
}
f = open("json1","w",encoding = "utf-8")
#print(json.dumps(info)) #结果{"age": 16, "name": "Mike"}
f.write(json.dumps(info)) 写入文件
{"age": 16, "name": "Mike"}

json.dump()序列化

不用写f.write()  将文件句柄传入

 import json
info = {
"name":"Mike",
"age":16,
#"fun":sayhi
} f = open("json1","w",encoding = "utf-8”)
json.dump(info,f) 写入文件:
{"age": 16, "name": "Mike"}

json.loads()反序列化

按之前学过的知识对文件反序列化

 f = open("json1","r",encoding = "utf-8")
data = eval(f.read())
print(data)
print(data["age"]) 结果:
{'age': 16, 'name': 'Mike'}
16

用json反序列化读取文件

 import json
f = open("json1","r",encoding = "utf-8")
data = json.loads(f.read())
print(data["age"])
结果
16

json.load()反序列化

 import json
f = open("json1","r")
# data = pickle.loads(f.read())
print(json.load(f)) 结果:
{'age': 16, 'name': 'Mike'}

pickle.dumps() 序列化

pickle只有在Python本语言里使用,java不认识pickle数据类型,只认识json数据类型

pickle可以序列化python里的所有数据类型

 import pickle
def sayhi():
print("hello")
info = {
"name":"Mike",
"age":16,
"fun":sayhi
} f = open("json1","wb")
f.write(pickle.dumps(info))

写入的文件

注意:

pickle.loads() 反序列化

 import pickle
def sayhi():
print("hello") #为何这里要再写一遍,在序列化时程序结束函数的内存地址已经被释放了 已找不到 f = open("json1","rb")
data = pickle.loads(f.read())
print(data["age"])
print(data)
结果:
16
{'name': 'Mike', 'fun': <function sayhi at 0x005D2FA8>, 'age': 16}

json and pickle 序列化的更多相关文章

  1. (转)python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    阅读目录 1.1.1导入模块 1.1.2__name__ 1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代 ...

  2. python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...

  3. Python的json and pickle序列化

    json序列化和json反序列化 #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' import json a = ...

  4. (1)json和pickle序列化模块

    json 和pickle 模块 json和pickle模块下都有4个功能 dumps  <---> loads  (序列化 <--->反序列化) dump <---> ...

  5. Python3 json、pickle序列化与反序列化

    注意:可以dumps多次,loads只能一次,一般我们只dumps一次,loads一次,多个版本就写入多个文件 一.json序列化与反序列化: 支持各种语言数据交互,但只能处理字典,列表,集合等简单的 ...

  6. json和pickle序列化模块

    一.json序列化模块 1.序列化:将内存数据转成字符串加以保存. 2.反序列化:将字符串转成内存数据加以读取. data = { '北京':{ '五道口':{ 'sohu':'引擎', } } } ...

  7. python 跨语言数据交互、json、pickle(序列化)、urllib、requests(爬虫模块)、XML。

    Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] 和 [python基本数据类型]间进 ...

  8. json and pickle 序列化和反序列化

    类似vmware虚拟机里的虚拟主机挂起操作,把当前内存拷贝成文件保存. 上面的这种操作就叫内存序列化:如下图: 有序列化就有反序列化,要把文件里的东西再恢复成字典:eval把字符串变成字典. 但是上面 ...

  9. python学习之day5,装饰器,生成器,迭代器,json,pickle

    1.装饰器 import os import time def auth(type): def timeer(func): def inner(*args,**kwargs): start = tim ...

随机推荐

  1. tomcat8.5配置redis实现session共享(tomcat-redis-session-manager-master)

    1.将下面几个jar包依赖放到tomcat的lib目录下: 2.修改tomcat/conf下context.xml文件,在<Context>节点添加如下代码: <Valve clas ...

  2. (31)django中的分页器

    book_list = models.Book.objects.all()    #查出指定表中的所有数据paginator = Paginator(book_list,2)    #实例化对象,传入 ...

  3. Python开发 基礎知識 3.類別&方法 (bool & str) (未完待續)

    類別 可使用type()查看 內建 [ 布爾:bool (Boolen) 字串:str (String) 數字:int (Integer) 小數:float 列表:list 元祖:tuple 字典:d ...

  4. tomcat 端口修改和内存配置

    端口号修改参考:https://jingyan.baidu.com/article/adc815139b12def722bf7377.html Tomcat内存溢出(windows) java.lan ...

  5. mysql下载以及安装

    因为xampp怎么都连接不上mysql,我感觉有可能是因为装mysql的时候试了很多次才安装成功,之前的mysql没有卸载干净造成的,今天把mysql卸载干净,又重新安装配置环境,但是还是连接不上,然 ...

  6. linux系统常用的基本命令分类

    linux系统常用的基本命令分类: 文件命令:vim vimdiff diff mkdir touch rm mv cp ln cd ls more less head tail cat grep e ...

  7. Linux服务器调教日常

    本文为Linux服务器调教日常,不保证正确. 1. sshd配置: https://www.cnblogs.com/byeyear/p/9289063.html 2. 禁止普通用户su 1. 编辑/e ...

  8. nginx的启动,停止和重启

    启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /us ...

  9. [UE4]从零开始构建VR角色

    一个工程是不是VR,并没有什么特别的地方,原则上任何工程都可以在VR设备下展示 一.新建一个名为“VRPawnBase”的Pawn. 二.在VRPawnBase中添加组件“Steam VRChaper ...

  10. ARM 编译产生.map之RO RW ZI

    RO:  程序中的指令和常量,存储在常量和代码区,因为是不能改变的,所以—READ ONLY; RW: 程序中的已初始化全局变量和静态变量,存储在堆中,因为是变量,所以——READ AND WRITE ...