从文件夹内的谷歌云存储下载文件

问题描述 投票:0回答:2

我有一个 python 脚本,它获取已上传到谷歌云存储桶的文件列表,并尝试以字符串形式检索数据。

代码很简单:

file = open(base_dir + "/" + path, 'wb')
data =  Blob(path, bucket).download_as_string()
file.write(data)

我的问题是我上传的数据存储在存储桶中的文件夹内,因此路径类似于:

folder/innerfolder/file.jpg

当google库尝试下载文件时,它以GET请求的形式获取它,这会将上面的路径变成:

https://www.googleapis.com/storage/v1/b/bucket/o/folder%2Finnerfolder%2Ffile.jpg

有什么方法可以阻止这种情况发生/通过这种方式下载文件吗?干杯。

python python-2.7 google-cloud-storage google-cloud-platform
2个回答
69
投票

是的 - 您可以使用 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)

您也可以使用

.download_as_string()
,但当您将其写入文件时,无论如何直接下载到文件可能会更容易。

需要注意的唯一有点尴尬的事情是,文件路径是存储桶名称之后的路径,因此与 Web 界面上的路径不完全一致。


0
投票

如何下载一批文件,就像现在我想一次下载 10 个 blob。

© www.soinside.com 2019 - 2024. All rights reserved.