读写JSON文件

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于 ECMAScript 的一个子集。 JSON 采用完全独立于语言的文本格式,但是也使用了类似于 C 语言家族的习惯(包括 C、C++、Java、JavaScript、Perl、Python等)。这些特性使 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

JSON 在 Python 中分别由 list 和 dict 组成。

json 模块提供了四个功能:dumpsdumploadsload

  • dumps 把数据类型转换成字符串

  • dump 把数据类型转换成字符串并存储在文件中

  • loads 把字符串转换成数据类型

  • load 把文件打开从字符串转换成数据类型

写入 JSON 文件

简介

Python 模块中的 json 模块提供了一个名为 dump() 的方法,它将 Python 对象转换为适当的 JSON 对象。它是 dumps() 方法的一个小变种。

dump() 和 dumps() 的区别

dump()dumps()
当 Python 对象必须被存储在一个文件中时,dump() 方法就会被使用。dumps() 是在要求对象为字符串格式时使用的,用于解析、打印等。
dump() 需要将输出的 JSON 文件名作为一个参数来存储。dumps() 并不要求传递任何这样的文件名。
这种方法在内存中写入,然后单独执行写入磁盘的命令。这个方法直接写到 JSON 文件中
较快的方法慢 2 倍

dump() 语法: json.dump(d, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None)

参数

  • indent:它提高了 JSON 文件的可读性。可以传递给这个参数的可能值是简单的双引号(""),任何整数值。简单的双引号使每个键值对出现在新的一行。
  • skipkeys:如果键不属于标准允许的类型,如 intfloatstringNone 或 bool,在转储它们时将产生错误。
  • separator:这个参数有一个或两个值。第一个值指定将一个键值对与另一个键值对分开的符号。下一个值指定将值和它的键分开的符号。
  • sort_keys:这个参数采用布尔值。如果它被设置为 True,键将以升序设置,否则,它们将以 Python 对象的形式出现。
  • ensure_ascii:这个参数也只取布尔值。如果它没有被设置为 True,非 ASCII 字符将被原封不动地转入输出文件。默认情况下,该值为 True
  • allow_nan:它有助于序列化浮点数的范围。

示例

下面的示例将一个 data 字典写入 demo.json 文件中:

# 写入 JSON 数据
import json

data = {
    'name': 'linghu',
    'age': 8
}
with open('demo.json', 'w') as f:
    json.dump(data, f)

读取 JSON 文件

json.loads() 方法可用于解析有效的 JSON 字符串并将其转换为 Python 字典。它主要用于将 JSON 数据组成的原生字符串、字节或字节数组反序列化为 Python 字典。

语法: json.loads(s)
参数: 它采用字符串、字节或字节数组实例,其中包含 JSON 文档作为参数。
返回: 它返回一个 Python 对象。

示例

读取 demo.json 的中的内容

# 写入 JSON 数据
import json

data = {
    'name': 'linghu',
    'age': 8
}
with open('demo.json', 'w') as f:
    json.dump(data, f)

# 读取文件
# load() 方法
with open('demo.json', 'r') as f:
    print(json.load(f))

# loads() 方法
with open('demo.json', 'r') as f:
    print(json.loads(f.read()))
{'name': 'linghu', 'age': 8}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值