python模块之序列化模块

  序列化

"""
    序列--字符串
    序列化--其他数据类型转化为字符串数据类型
    反序列化--字符串转化为其他数据类型
"""

  json模块

"""
    json 五星好评  数字 字符串 列表 字典 元组
        优点:通用的序列化格式
        缺点:只有很少的一部分数据类型-->字符串
"""

  

    1,dumps和loads

import json
# dumps和loads 操作内存中的数据
dic = {‘k1‘: ‘v1‘}
print(type(dic), dic)   # <class ‘dict‘> {‘k1‘: ‘v1‘}
str_d = json.dumps(dic)  # 序列化
print(type(str_d), str_d)  # <class ‘str‘> {"k1": "v1"}
dic_l = json.loads(str_d)  # 反序列化
print(type(dic_l), dic_l)  # <class ‘dict‘> {‘k1‘: ‘v1‘}

    2,dump和load

# dump和load 操作文件中的数据  序列化中文的话,要修改默认参数ensure_ascii=False
dic = {‘k1‘: ‘v1‘}
f = open(‘json_test‘, ‘w‘, encoding=‘utf-8‘)
json.dump(dic, f)   # 文件序列化入的内容为{"k1": "v1"}
f.close()
f = open(‘json_test‘, encoding=‘utf-8‘)
# load只能反序列化一次性序列化入文件中的内容,如果多次dump,load时会报错!
ret = json.load(f)
print(ret)   # {‘k1‘: ‘v1‘}
f.close()

  json一些参数的用法

dic = {‘name‘: ‘蔠缬草‘, ‘age‘: 25, ‘hobby‘: ‘read‘}
str_d = json.dumps(dic)  # 序列化
str_d1 = json.dumps(dic, ensure_ascii=False)  # 序列化中文要想能看懂内容,要修改参数ensure_ascii=False
print(str_d)  # {"age": 25, "name": "\u8520\u7f2c\u8349", "hobby": "read"}
print(str_d1)  # {"hobby": "read", "name": "蔠缬草", "age": 25}

# 特殊格式的序列化
dic = {‘name‘: ‘蔠缬草‘, ‘age‘: 25, ‘hobby‘: ‘read‘}
str_d = json.dumps(dic, sort_keys=True, indent=4, separators=(‘,‘, ‘:‘), ensure_ascii=False)
print(str_d)
# 打印内容:
"""
{
    "age":25,
    "hobby":"read",
    "name":"蔠缬草"
}
"""

  

  pickle模块

"""
    pickle  序列化为bytes类型
        优点:python中所有的数据类型-->字符串
        缺点:序列化的内容只有python能识别,序列化和反序列化需要相同的环境。
"""

  pickle方法和json的方法相同

import pickle
# pickle和json的用法一样,不同的是序列化之后的值是bytes类型
dic = {‘k1‘: ‘v1‘, ‘k2‘: ‘v2‘}
pd_str = pickle.dumps(dic)
print(pickle)  # 序列化 打印bytes类型
pl_str = pickle.loads(pd_str)
print(pl_str)  # 反序列化
dic = {‘k1‘: ‘v1‘, ‘k2‘: ‘v2‘}
f = open(‘pickle_test‘, ‘wb‘)
pickle.dump(dic, f)   # 序列化  写入的是bytes类型
f.close()
f = open(‘pickle_test‘, ‘rb‘)
ret = pickle.load(f)  # 反序列化
print(ret)

  shelve模块

"""
    shelve
        存在序列化句柄
        使用句柄直接操作,非常方便
"""

  shelve只有open方法,打开文件返回一个序列化句柄,通过操作句柄来完成序列化的相关操作。

import shelve
f = shelve.open(‘shelve_test‘)  # 产生序列化句柄
f[‘key‘] = {‘k1‘: ‘v1‘, ‘k2‘: ‘v2‘}   # 操作句柄进行文件序列化写入
f.close()
f = shelve.open(‘shelve_test‘)
print(f[‘key‘])   # 反序列化取值,key必须存在,否则报错
f.close()

  shelve writeback参数的用法

f = shelve.open(‘shelve_test‘, writeback=False)  # 参数writeback=False 数据修改不会生效
f[‘key‘][‘k3‘] = ‘v3‘  # 修改并没有生效
f.close()
f = shelve.open(‘shelve_test‘)
print(f[‘key‘])   # {‘k2‘: ‘v2‘, ‘k1‘: ‘v1‘}
f.close()

f = shelve.open(‘shelve_test‘, writeback=True)
f[‘key‘][‘k3‘] = ‘v3‘  # 修改生效
f.close()
f = shelve.open(‘shelve_test‘)
print(f[‘key‘])   # {‘k3‘: ‘v3‘, ‘k2‘: ‘v2‘, ‘k1‘: ‘v1‘}
f.close()

原文地址:https://www.cnblogs.com/zxc-Weblog/p/8288982.html

时间: 2024-10-29 05:12:40

python模块之序列化模块的相关文章

python 学习二十五天(python内置模块之序列化模块)

今日主要内容 1.python内置模块-序列化模块 python中的序列化模块 json 所有的编程语言都通用的序列化格式....它支持的数据类型非常有限 数字 字符串 列表 字典 pickle 只能在python语言的程序之间传递数据用的..pickle支持python中所有的数据类型 shelve python3.* 之后才有的 2.摘要模块---hashlib 3.一道经典面试题 第一.python内置模块---序列化 ***所有的导入模块都需要把import放在文件首位 什么叫序列化 能

python模块之sys模块和序列化模块

sys模块 sys模块是与python解释器交互的一个接口 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1) sys.version 获取Python解释程序的版本信息 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 序列化模块 序列化的目的: 以某种存储形式使自定义对象持久化 将对象从一个地方传递到另一个地

python常用模块之sys模块与序列化模块

一.sys模块 sys模块是一个与python解释器交互的模块,常用方法如下 sys.argv:用于程序运行时从程序外部接收参数,如果不传参数则显示的是程序的文件名 import sys name=sys.argv[1] password=sys.argv[2] if name=='jly' and password=='123': print('程序继续执行') else: sys.exit() -------------------------------------------------

Python模块、序列化模块

一.模块 模块就是写好的功能放在一个文件里,即py文件 模块的种类: ① 内置模块:安装python解释器的时候就装上了 ② 第三方模块.扩展模块:不在内置模块不一定不重要,根据用户需求安装使用 ③ 自定义模块:自己写的py文件 二.序列化模块 序列:列表.元组.字符串.bytes 序列化:把一个数据类型转换成字符串.bytes类型的过程就是序列化 数据类型序列化的场景: ① 把一个数据类型存储在文件中 ② 把一个数据类型通过网络传输的时候 eval和exec:用户输入,文件读入,网络传入都不能

Python内置模块之序列化模块

序列化模块 json dumps loads dump load pickle dumps loads dump load shelve json 1: dumps/loads import json # 导入json模块 dic = {'name':'wangys','age':18,'sex':'male'} # 定义一个字典 str_dir = json.dumps(dic) # 将字典序列化 print(str_dir,type(str_dir)) new_dic = json.load

常用模块一(os模块、序列化模块(json,pickle))

一.os模块 os模块是与操作系统交互的一个接口. import os # 和文件和文件夹的操作有关 os.makedirs('dirname1/dirname2') # 可生成多层递归目录 os.removedirs('dirname1') # 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname') # 生成单级目录:相当于shell中mkdir dirname os.rmdir('dirname') # 删除单级空目录,若目录不为空则无法

python note 18 序列化模块

1.json模块 # json 在所有的语言之间都通用 : json序列化的数据 在python上序列化了 那在java中也可以反序列化# 能够处理的数据类型是非常有限的 : 字符串 列表 字典 数字# 字典中的key只能是字符串 import json ret = json.dumps(dic) # 序列化 print(dic,type(dic)) print(ret,type(ret)) res = json.loads(ret) # 反序列化 print(res,type(res)) #

os模块,sys模块,序列化模块,异常处理

os模块 跟操作系统相关 import os # os.makedirs('dirname1/dirname2')#生成多层递归目录 # os.removedirs('dirname1')#若目录为空,则删除,查找上级目录,如果为空也删除,递归删除 # os.mkdir('dirname')#生成单级目录,不能生成多级 # os.rmdir('dirname1')#删除单级空目录,如果目录不为空报错无法删除 # os.listdir('dirname')#列出指定目录下的所有文件极其子目录,包括

Python 入门之 内置模块 -- 序列化模块(json模块、pickle模块)

Python 入门之 内置模块 -- 序列化模块(json模块.pickle模块) 1.序列化 Python中这种序列化模块有三种: ? json模块 : ? 不同语言都遵循的一种数据转化格式,即不同语言都使用的特殊字符串.(比如Python的一个列表[1, 2, 3]利用json转化成特殊的字符串,然后在编码成bytes发送给php的开发者,php的开发者就可以解码成特殊的字符串,然后在反解成原数组(列表): [1, 2, 3]) ? json序列化只支持部分Python数据结构:dict,l