首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从谷歌云存储下载文件: ValueError("%r无法转换为unicode“%(值,))

无法从谷歌云存储下载文件: ValueError("%r无法转换为unicode“%(值,))
EN

Stack Overflow用户
提问于 2021-06-10 22:03:33
回答 1查看 399关注 0票数 0

我正在尝试使用Python从我的云存储存储桶中下载文件:

代码语言:javascript
复制
GCP_BUCKET_NAME = "my-learning-bucket"
storage_bucket = storage_client.bucket(GCP_BUCKET_NAME)


def download_object(download_obj_name):
    blob = storage_bucket.blob(download_obj_name)
    blob.download_to_file_name(f"downloads/data.db")

但它给了我一个错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/Users/asnimansari/Desktop/tradestation/ares/main.py", line 22, in <module>
    root.run_click_commands()
  File "/Users/asnimansari/.pyenv/versions/3.9.4/lib/python3.9/site-packages/click/core.py", line 1137, in __call__
    return self.main(*args, **kwargs)
  File "/Users/asnimansari/.pyenv/versions/3.9.4/lib/python3.9/site-packages/click/core.py", line 1062, in main
    rv = self.invoke(ctx)
  File "/Users/asnimansari/.pyenv/versions/3.9.4/lib/python3.9/site-packages/click/core.py", line 1668, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/asnimansari/.pyenv/versions/3.9.4/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/asnimansari/.pyenv/versions/3.9.4/lib/python3.9/site-packages/click/core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "/Users/asnimansari/Desktop/tradestation/ares/commands/import_data.py", line 9, in import_data
    import_latest_data_from_gc()
  File "/Users/asnimansari/Desktop/tradestation/ares/helpers/import_data_from_gc.py", line 8, in import_latest_data_from_gc
    db_names_in_gcp = get_db_names_in_gcp()
  File "/Users/asnimansari/Desktop/tradestation/ares/helpers/gcp.py", line 29, in get_db_names_in_gcp
    donwload_object(bobu)
  File "/Users/asnimansari/Desktop/tradestation/ares/helpers/gcp.py", line 13, in donwload_object
    blob = storage_bucket.blob(download_obj_name)
  File "/Users/asnimansari/.pyenv/versions/3.9.4/lib/python3.9/site-packages/google/cloud/storage/bucket.py", line 688, in blob
    return Blob(
  File "/Users/asnimansari/.pyenv/versions/3.9.4/lib/python3.9/site-packages/google/cloud/storage/blob.py", line 205, in __init__
    name = _bytes_to_unicode(name)
  File "/Users/asnimansari/.pyenv/versions/3.9.4/lib/python3.9/site-packages/google/cloud/_helpers.py", line 389, in _bytes_to_unicode
    raise ValueError("%r could not be converted to unicode" % (value,))
ValueError: <Blob: tradeenginedata, quotes/quotes_2021-06-10.db, 1623310593606516> could not be converted to unicode

该文件是一个sqlite数据库。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-11 15:08:51

我看到您已经打开了一个GitHub Issue link,并且云存储团队已经做出了响应。

正如他们所提到的,错误来自于您正在向storage_bucket.blob()传递无效字符串的事实。作为额外的见解,我们可以从错误中看到,实际上传入的是Blob对象,而不是String。

因此,请确保download_obj_name是有效的字符串,而不是Blob对象。

此外,您还必须更正download方法中的拼写错误,并注意额外的下划线。正确的方法是download_to_filename(),而不是download_to_file_name()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67922750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档