python - Python 将 JSON 写入 S3
问题描述
这是我需要以 JSON 格式写入 S3 的字典列表。
data = [{"name": "abc", "age": 23}, {"name": "def", "age": 21}, {"name": "fgh", "age": 34}]
我想把它写成example.json,格式如下
{"name": "abc", "age": 23}
{"name": "def", "age": 21}
{"name": "fgh", "age": 34}
因此,将每个 dict 写在一行上并\n
用作换行符。此代码在本地适用于我:
import json
with open('example.json', 'w') as f:
for d in data:
json.dump(d, f, ensure_ascii=False)
f.write('\n')
现在我不想将文件保存在本地,而是直接逐行保存到 S3,或者以任何方式保存所需的格式。我知道我们可以json.dumps()
像这样直接使用写入 S3
import json
import boto3
s3 = boto3.client('s3')
s3.put_object(
Body=str(json.dumps(data))
Bucket='your_bucket_name'
Key='your_key_here'
)
但我想保留这不会做的格式。我应该如何继续前进?
解决方案
仅生成字符串并写入 S3 有什么问题吗?
data_string = ""
for d in data:
data_string += json.dumps(d, ensure_ascii=False)
data_string += "\n"
s3 = boto3.client('s3')
s3.put_object(
Body=data_string
Bucket='your_bucket_name'
Key='your_key_here'
)
推荐阅读
- python - 存储 GNU 时间命令和脚本的输出
- graphql - 如何从 AWS Amplify 生成的 GraphQL 文档中获取 createdAt、updatedAt 和 owner 字段?
- c - 使用命名管道和信号在 3 个进程之间进行通信的最佳方式。
- javascript - 方法不会更新 DIV
- haskell - 如何在没有 monad 的纯 haskell 代码中捕获错误
- swift - 在 NSWindowController 上,设置 contentViewController 会更新窗口的位置,我该如何停止呢?
- reactjs - react-bootstrap-typeahead:无法使用回车键从下拉列表中选择突出显示的项目
- angular-material - 按钮组的角材料恒定宽度
- python-3.x - 如何将文本数据集(问题和答案)加载到 numpy 数组中以训练 keras 模型
- ansible-2.x - 在 Ansible 中,如何迭代具有数组的标准输出?