当前位置:   article > 正文

Python--序列化和反序列化_python 什么叫序列化 不可序列化

python 什么叫序列化 不可序列化
通过文件操作,可将字符串写入到一个本地文件,但是无法将一个对象,如字典,列表,元组直接写入到一个文件里,这是就需要将这个对象进行序列化,然后写入文件。

设计一套协议,按照某种规则,把内存中的数据转换为字节序列,保存到文件,这就是序列化,反之,从文件的字节序列恢复到内存中,就是反序列化。
  • 1
  • 2
  • 3

序列化: 将对象转换为字节序列。

反序列化:将字节序列转换为对象。

JSON模块

Python中JSON模块可用来实现数据的序列化和反序列化。

JSON:Javascript Object Notation ,一种轻量级的数据交换标准。JSON的本质是字符串。

使用JSON实现序列化

JSON提供了dump和dumps方法,将一个对象序列化。把对象转换为字符串,方法本身不具备将数据写入到文件的功能。

dumps( ) 方法测试

测试代码:

import json

names = [‘Jack’, ‘Dennis’, ‘Ritchie’, ‘Mike’, ‘Tony’]

# dumps 传入一个对象,转换为一个JSON字符串

result = json.dumps(names)

print(result)

print(type(result)) # <class ‘str’>

with open(‘json.txt’, ‘w’) as f:

    f.write(result)
  • 1

列表被写入到文件json.txt
在这里插入图片描述

dump() 方法测试

将对象转换为字符串的同时,指定一个文件对象,把转换后的字符串写入到这个文件

# dump

fp =open(‘json2.txt’, ‘w’)

json.dump(names, fp)

fp.close()

# 或者

with open(‘json3.txt’, ‘w’) as f:

json.dump(names, f)
  • 1

实现了对象序列化的同时写入文件。

创建文件效果如下:

在这里插入图片描述

json2.txt和json3.txt写入了同样的内容。

JSON实现反序列化

将JSON的字符串变成一个Python对象

# 反序列化 loads( )方法

with open(‘json.txt’, ‘r’) as f:

    content = f.read()

    print(content)

    print(type(content))
  • 1
  • 2
  • 3
  • 4
  • 5

输出:

[“Jack”, “Dennis”, “Ritchie”, “Mike”, “Tony”]

<class ‘str’>

可以看到,读取输出的是字符串类型,并不是列表。

with open(‘json.txt’, ‘r’) as f:

    content = f.read()

    result = json.loads(content)

    print(type(result))
  • 1
  • 2
  • 3
  • 4
  • 5

输出:

<class ‘list’>

可以看出,使用loads( )方法后将字符串转变为列表对象了。

# load( )方法

测试代码:

with open(‘json.txt’) as f:

    result = json.load(f)

    print(result)

    print(type(result))
  • 1
  • 2
  • 3
  • 4
  • 5

输出:

[‘Jack’, ‘Dennis’, ‘Ritchie’, ‘Mike’, ‘Tony’]

<class ‘list’>

直接转换为列表对象了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/426123
推荐阅读
相关标签
  

闽ICP备14008679号