You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python无需写入文件直接上传JSON数组至GCP Bucket

问题描述

我原本是这样将JSON文件上传至GCP Bucket的:
data_array是一个包含多个JSON对象的数组,格式示例:"[{key1: value1, key2: value2},{key1: value1, key2: value2},...]"

原来的代码流程:

path_to_file = # 将数组转储到文件的路径
blob = bucket.blob(blob_name)
# blob.upload_from_filename(path_to_file)

我想跳过“转储到文件”这一步,直接把数组上传到GCP Bucket,但调用blob.upload_from_string(path_to_file)时出现报错,请问有没有无需写入文件就能直接上传数组的方法?

解决方案

问题出在调用upload_from_string时传错了参数——你传的是文件路径,而这个方法需要的是字符串内容,不是路径。正确的做法是把数组序列化为JSON字符串,再传给这个方法:

  • 先导入json模块(未导入的话需要添加)
  • 将data_array序列化为标准JSON字符串
  • 调用upload_from_string传入该字符串,同时指定MIME类型为application/json(可选,但推荐,方便后续识别文件类型)

示例代码:

import json

# 假设data_array是你的目标数组
json_str = json.dumps(data_array)
blob = bucket.blob(blob_name)
# 上传JSON字符串,指定MIME类型
blob.upload_from_string(json_str, content_type='application/json')

如果你的数组需要按每行一个JSON对象的格式(JSON Lines)存储,可以用换行符拼接每个序列化后的对象:

import json

# 生成JSON Lines格式的字符串
json_lines_str = '\n'.join(json.dumps(item) for item in data_array)
blob = bucket.blob(blob_name)
# 上传时指定对应的MIME类型
blob.upload_from_string(json_lines_str, content_type='application/jsonlines')

这样就完全跳过了写入本地文件的步骤,直接把内存中的数组转换成字符串后上传到GCP Bucket了。

内容的提问来源于stack exchange,提问作者john

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 10:54:52