我想上传一个JSON文件/字典到谷歌云存储,但无论我怎么尝试,我都会出错。这是不可能的吗
下面是我的Python代码:
response = requests.get(url, headers=headers)
json_data = response.json()
storage_client = storage.Client()
bucket = storage_client.bucket("syr_test_bucket1")
blob = bucket.blob(json_data)
blob.upload_from_filename(json_data)
我得到的错误是:
Traceback (most recent call last):
File "/layers/google.python.pip/pip/bin/functions-framework", line 8, in <module>
sys.exit(_cli())
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/functions_framework/_cli.py", line 37, in _cli
app = create_app(target, source, signature_type)
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/functions_framework/__init__.py", line 237, in create_app
spec.loader.exec_module(source_module)
File "<frozen importlib._bootstrap_external>", line 843, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/workspace/main.py", line 16, in <module>
blob = bucket.blob(json_data)
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/google/cloud/storage/bucket.py", line 716, in blob
return Blob(
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/google/cloud/storage/blob.py", line 221, in __init__
name = _bytes_to_unicode(name)
File "/layers/google.python.pip/pip/lib/python3.8/site-packages/google/cloud/_helpers.py", line 389, in _bytes_to_unicode
raise ValueError("%r could not be converted to unicode" % (value,))
API函数的错误使用:
函数Bucket.blob(blob_name, ...)接受一个blob名称作为输入-从
response.json()
调用中为其提供一个JSON字符串除非您的JSON与blobname 100%相同,否则这是行不通的
upload_from_filename函数需要文件名-您提供的字符串不是文件名:
blob.
upload_from_filename
(pretty_json)
。。。似乎这需要一个文件在你的磁盘上。。。内存中没有字符串。。。(使用upload_from_string
表示该内容):或创建一个文件:
参考资料:
相关问题 更多 >
编程相关推荐