Python编程:json模块和pickle模块

简介: Python编程:json模块和pickle模块

普通文件读写

# 文件写入
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!
相关文章
|
1天前
|
Python
在Python中,利用`os模块`的`path.exists()`函数可判断文件是否存
在Python中,利用`os模块`的`path.exists()`函数可判断文件是否存在,该函数对路径进行检查,存在则返回True,不存在则返回False。示例代码展示了如何检查&#39;example.txt&#39;文件是否存在并相应打印消息。此外,`os.path.isfile()`用于确认路径是否为文件,仅当是文件时返回True,否则返回False,同样配以示例说明其用法。
8 2
|
2天前
|
Python
【Python进阶(五)】——模块搜索及工作目录
【Python进阶(五)】——模块搜索及工作目录
|
3天前
|
Python Windows
python中的异常与模块
python中的异常与模块
9 1
|
4天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
19 5
|
7天前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。
10 0
|
7天前
|
测试技术 Python
Python模块化方式编程实践
Python模块化编程提升代码质量,包括:定义专注单一任务的模块;使用`import`导入模块;封装函数和类,明确命名便于重用;避免全局变量降低耦合;使用文档字符串增强可读性;为每个模块写单元测试确保正确性;重用模块作为库;定期维护更新以适应Python新版本。遵循这些实践,可提高代码可读性、重用性和可维护性。
32 2
|
13天前
|
测试技术 调度 索引
python编程中常见的问题
【4月更文挑战第23天】
32 2
|
13天前
|
JSON 数据格式 Python
Python标准库中包含了json模块,可以帮助你轻松处理JSON数据
【4月更文挑战第30天】Python的json模块简化了JSON数据与Python对象之间的转换。使用`json.dumps()`可将字典转为JSON字符串,如`{&quot;name&quot;: &quot;John&quot;, &quot;age&quot;: 30, &quot;city&quot;: &quot;New York&quot;}`,而`json.loads()`则能将JSON字符串转回字典。通过`json.load()`从文件读取JSON数据,`json.dump()`则用于将数据写入文件。
17 1
|
14天前
|
Python
Python实现压缩解压---tarfile模块详解
Python实现压缩解压---tarfile模块详解
|
14天前
|
网络协议 算法 网络架构
Python网络编程之udp编程、黏包以及解决方案、tcpserver
Python网络编程之udp编程、黏包以及解决方案、tcpserver