首页 > 解决方案 > 如何使用 Python 访问存储桶 GCS 的子文件夹中的文件?

问题描述

from google.cloud import storage
import os
bucket = client.get_bucket('path to bucket')

上面的代码将我连接到我的存储桶,但我正在努力连接存储桶中的特定文件夹。

我正在尝试此代码的变体,但没有运气:

blob = bucket.get_blob("training/bad")
blob = bucket.get_blob("/training/bad")
blob = bucket.get_blob("path to bucket/training/bad")

我希望能够访问坏子文件夹中的图像列表,但我似乎无法这样做。尽管阅读了文档,但我什至不完全理解 blob 是什么,并根据教程对其进行了修改。

谢谢你。

标签: python-3.xgoogle-cloud-platformgoogle-cloud-storage

解决方案


您错过的是,在 GCS 中,桶中的对象不是以类似文件系统的目录结构/层次结构组织的,而是以平面结构组织的。

更详细的解释可以在子目录的工作原理中找到(在gsutil上下文中,是的,但根本原因是相同的 - GCS 平面命名空间):

gsutil 在 Google Cloud Storage 服务支持的“平面”名称空间之上提供了分层文件树的错觉。对于服务而言,对象 gs://your-bucket/abc/def.txt 只是一个名称中恰好包含“/”字符的对象。没有“abc”目录;只是一个具有给定名称的对象。

由于 GCS 中没有(子)目录/training/bad,因此实际上并不存在,因此您无法列出其内容。您所能做的就是列出存储桶中的所有对象,然后选择名称/路径以 . 开头的对象/training/bad


推荐阅读