如何将JSON文件/字典上传至Google Cloud Storage?报错如何解决
问题解答
将JSON字典或文件上传到Google Cloud Storage是完全可实现的,你的报错由API调用参数错误导致,具体如下:
错误原因
bucket.blob()接收的参数是存储到GCS后的文件名称(字符串类型),你传入了解析后的Python字典对象,无法被转为字符串触发报错upload_from_filename()接收的参数是本地文件的路径字符串,用于上传本地已存在的文件,你当前的数据是内存中的字典,该方法不适用于这个场景,且同样不能传入字典对象
修正方案
方案1:直接上传内存中的JSON数据(推荐,无需生成本地文件)
import json import requests from google.cloud import storage response = requests.get(url, headers=headers) json_data = response.json() storage_client = storage.Client() bucket = storage_client.bucket("syr_test_bucket1") # 自定义GCS中存储的文件名 blob = bucket.blob("uploaded_data.json") # 将字典转为JSON字符串后上传,ensure_ascii=False避免中文乱码 blob.upload_from_string( json.dumps(json_data, ensure_ascii=False), content_type="application/json" )
方案2:先存为本地文件再上传
如果需要先保留本地副本,可以使用该方式:
import json import requests from google.cloud import storage response = requests.get(url, headers=headers) json_data = response.json() # 先写入本地JSON文件 local_file_path = "./temp_data.json" with open(local_file_path, "w", encoding="utf-8") as f: json.dump(json_data, f, ensure_ascii=False) storage_client = storage.Client() bucket = storage_client.bucket("syr_test_bucket1") blob = bucket.blob("uploaded_data.json") # 传入本地文件路径上传 blob.upload_from_filename(local_file_path)
内容的提问来源于stack exchange,提问作者user13998944
相关产品推荐
相关产品推荐

