pyy*_*pyy 10 python python-2.7 google-cloud-storage google-cloud-platform
我有一个python脚本,它获取已上传到谷歌云存储桶的文件列表,并尝试以字符串形式检索数据.
代码很简单:
file = open(base_dir + "/" + path, 'wb')
data = Blob(path, bucket).download_as_string()
file.write(data)
Run Code Online (Sandbox Code Playgroud)
我的问题是我上传的数据存储在存储桶中的文件夹中,因此路径类似于:
folder/innerfolder/file.jpg
Run Code Online (Sandbox Code Playgroud)
当谷歌图书馆试图下载该文件时,它会以GET请求的形式获取该文件,从而将上述路径转换为:
https://www.googleapis.com/storage/v1/b/bucket/o/folder%2Finnerfolder%2Ffile.jpg
Run Code Online (Sandbox Code Playgroud)
有没有办法阻止这种情况发生/通过这种方式下载文件?干杯.
小智 14
是的 - 您可以使用python 存储客户端库执行此操作.
只需安装它,pip install --upgrade google-cloud-storage然后使用以下代码:
from google.cloud import storage
# Initialise a client
storage_client = storage.Client("[Your project name here]")
# Create a bucket object for our bucket
bucket = storage_client.get_bucket(bucket_name)
# Create a blob object from the filepath
blob = bucket.blob("folder_one/foldertwo/filename.extension")
# Download the file to a destination
blob.download_to_filename(destination_file_name)
Run Code Online (Sandbox Code Playgroud)
您也可以使用,.download_as_string()但是当您将其写入文件时,无论如何直接下载到文件可能会更容易.
要注意的唯一有点尴尬的事情是文件路径是来自桶名称之后的路径,因此不会与Web界面上的路径完全对齐.
| 归档时间: |
|
| 查看次数: |
11184 次 |
| 最近记录: |