Python编程:json模块和pickle模块

举报
彭世瑜 发表于 2021/08/13 22:53:32 2021/08/13
【摘要】 普通文件读写 # 文件写入 info = { "name": "Tom", "age": 23 } f = open("info.txt", "w") f.write(str(info)) # {'name': 'Tom', 'age': 23} f.close() # 文件读取 f = open("info.txt", "r") data = eval(f.r...

普通文件读写

# 文件写入
info = { "name": "Tom", "age": 23
}

f = open("info.txt", "w")
f.write(str(info))  # {'name': 'Tom', 'age': 23}
f.close()

# 文件读取
f = open("info.txt", "r")
data = eval(f.read())
f.close()
print(type(data), data)
# <class 'dict'> {'name': 'Tom', 'age': 23}
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

通过json

import json

# 序列化,只能一次
f = open("info2.txt", "w")
json.dump(info, f)  #相当于 f.write(json.dumps(info))
# {"name": "Tom", "age": 23}
f.close()

# 反序列化,只能一次
f = open("info2.txt", "r")
data = json.load(f)  #相当于: data = json.loads(f.read())
f.close()
print(type(data), data)
# <class 'dict'> {'name': 'Tom', 'age': 23}
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

如果需要有乱码或者需要美观缩进对齐,可以使用如下方式进行格式化输出:

with open("result.txt", "w") as f: txt = json.dumps(lst, ensure_ascii=False, indent=4) f.write(txt)
  
 
  • 1
  • 2
  • 3

参考: python json.dumps()函数输出json格式,使用indent参数对json数据格式化输出

通过pickle

try: import cPickle as pickle # c语言,读写更快
except ImportError: import pickle

# 写入
def sayHi(): print("Hello world!")

info = { "name": "Tom", "age": 23, "func": sayHi
}

f = open("info3.txt", "wb")
f.write(pickle.dumps(info))  # 等价于:pickle.dump(info, f)
f.close()
"""
�}q (X   funcqc__main__
sayHi
qX   ageqKX   nameqX   Tomqu.
"""

# 读取
f = open("info3.txt", "rb")
data = pickle.loads(f.read())  # 等价于:pickle.load(f)

f.close()
print(type(data),data)
# <class 'dict'> {'name': 'Tom', 'func': <function sayHi at 0x0000000002E5CBF8>, 'age': 23}
data["func"]()  # 调用 Hello world!
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/78966413

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。