python-3.x - 如何使用 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 是什么,并根据教程对其进行了修改。
谢谢你。
解决方案
您错过的是,在 GCS 中,桶中的对象不是以类似文件系统的目录结构/层次结构组织的,而是以平面结构组织的。
更详细的解释可以在子目录的工作原理中找到(在gsutil
上下文中,是的,但根本原因是相同的 - GCS 平面命名空间):
gsutil 在 Google Cloud Storage 服务支持的“平面”名称空间之上提供了分层文件树的错觉。对于服务而言,对象 gs://your-bucket/abc/def.txt 只是一个名称中恰好包含“/”字符的对象。没有“abc”目录;只是一个具有给定名称的对象。
由于 GCS 中没有(子)目录/training/bad
,因此实际上并不存在,因此您无法列出其内容。您所能做的就是列出存储桶中的所有对象,然后选择名称/路径以 . 开头的对象/training/bad
。
推荐阅读
- sql - 获取“复制”值
- docker - docker pull 完成与下载完成的区别
- php - 如何使用 php 将多页 csv 解析为 html 表
- python - 即使令牌有效,Youtube 分析 API 也会返回 403 禁止
- elixir - 将 Enum.filter 与 Enum.each 结合起来
- react-native - 反应原生 react-native-mauron85-background-geolocation:processReleaseResources FAILED
- sql - db2 存储过程中的全局临时表
- bash - 根据 bash 脚本中的部分名称和目录位置找出文件的路径
- node.js - 访问部署在 Azure 上的 React 应用程序中的应用程序设置
- vba - VBA比较2个数组循环>>突出显示并将差异复制到第三列