json - 读取存储在单个文件中的多个 json 对象
问题描述
我已将多个 json 对象存储在单个文件file.txt中
{"article": "....", "title": "...."}{"article": "....", "title": "...."}
我使用以下代码转储json 对象
import json
data = {}
data['title'] = '....'
data['article'] = '....'
data_2 = {}
data_2['title'] = '.....'
data_2['article'] = '.....'
with open('file.txt', 'w') as file:
json.dump(data , file, ensure_ascii=False)
json.dump(data , file, ensure_ascii=False)
我已经使用 for 循环更大规模地完成了这项工作
我尝试阅读这些对象,但出现以下错误
ValueError: Extra data: line 1 column 10329 - line 1 column 295676 (char 10328 - 295675)
然后我将每个对象存储在不同的行上
{"article": "....", "title": "...."}
{"article": "....", "title": "...."}
这导致了另一个错误
AttributeError: 'str' object has no attribute 'read'
我以这种方式存储了大约 4k 个对象,因此将它们存储在单独的字典中也是不可行的
(在类似问题上建议的方法)
对此的任何意见将不胜感激
解决方案
一个 JSON 文件应该只包含一个 JSON 才能正常工作。在您的情况下,您可以将所有这些字典包装在一个列表中,并将其作为单个 JSON 输出:
import json
lst = []
data = {}
data['title'] = '....'
data['article'] = '....'
lst.append(data)
data_2 = {}
data_2['title'] = '.....'
data_2['article'] = '.....'
lst.append(data_2)
with open('file.txt', 'w') as file:
json.dump(lst, file, ensure_ascii=False)
从该 JSON 文件中读取时,您将获得包含您放入其中的所有 dicts 的列表。
推荐阅读
- node.js - 从nodejs创建exe
- docker - Dockerfile RUN - 找不到文件
- cgal - 用信息约束 Delaunay
- java - 如何使用此特定 url 执行简单的 java HttpURLConnection 发布请求,该 URL 接受参数、json、不记名令牌给出 json 响应
- python - 使用 selenium 等在多个不同的网站上避免 Cookie-Popup
- process - 找出运行在什么核心 Linux 操作系统上?
- php - 使用 docker 安装 laravel octane roadrunner
- c# - 如何在已分组的 ListView 上禁用分组
- select - 如果字段与一个或多个文本字符串(单词)完全匹配,如何在 BigQuery 的 SELECT 中使用 CASE?
- google-apps-script - Google App Script 复制一张工作表并在特定文件夹中创建一个新的电子表格