Python编程:json模块和pickle模块

举报
彭世瑜 发表于 2021/08/13 22:53:32 2021/08/13
1.9k+ 0 0
【摘要】 普通文件读写 # 文件写入 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}
  
 

通过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}
  
 

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

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

参考: 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!
  
 

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

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

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

作者其他文章

评论(0

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

    全部回复

    上滑加载中

    设置昵称

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

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

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