无法从 Google 云存储下载文件:ValueError(“%r 无法转换为 unicode” %(值,))
Unable to download files from Google Cloud Storage: ValueError("%r could not be converted to unicode" % (value,))
我正在尝试使用 Python:
从我的云存储存储桶下载文件
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")
但它给我错误:
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数据库。
我看到你已经打开了 GitHub Issue link 并且云存储团队已经回复了。
正如他们所提到的,错误来自于您将无效字符串传递给 storage_bucket.blob()
。作为额外的见解,我们可以从错误中看出实际上传入的是 Blob 对象,而不是 String。
因此,请确保 download_obj_name
是有效的字符串而不是 Blob 对象。
此外,您必须更正下载方法中的错字并注意多出的下划线。正确的方法是download_to_filename()
,不是download_to_file_name()
.
我正在尝试使用 Python:
从我的云存储存储桶下载文件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")
但它给我错误:
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数据库。
我看到你已经打开了 GitHub Issue link 并且云存储团队已经回复了。
正如他们所提到的,错误来自于您将无效字符串传递给 storage_bucket.blob()
。作为额外的见解,我们可以从错误中看出实际上传入的是 Blob 对象,而不是 String。
因此,请确保 download_obj_name
是有效的字符串而不是 Blob 对象。
此外,您必须更正下载方法中的错字并注意多出的下划线。正确的方法是download_to_filename()
,不是download_to_file_name()
.