假设我在Google云端存储上有一个存储桶/子目录,此存储桶的地址为:
gs://test-monkeys-example/training_data/cats
在这个猫子目录中,我有一堆猫的图像,所有这些都是jpgs。我如何在python中循环遍历cats子目录并打印出其中所有文件的名称?
类似的东西:
for x in directory('gs://test-monkeys-example/training_data/cats'):
print(x)
显然目录('gs:// test-monkeys-example / training_data / cats')不是如何做到的,只是伪问题 - 我该怎么做?!
答案 0 :(得分:11)
Google云端存储仅支持列出以特定前缀开头的对象。您可以从客户端库中访问它,如下所示:
from google.cloud import storage
client = storage.Client()
bucket = client.bucket('mybucket')
for blob in bucket.list_blobs(prefix='training_data/cats'):
print blob.name
答案 1 :(得分:7)
使用存储模块:
import google.datalab.storage as storage
cats = [o.key for o in storage.Bucket('test-monkeys-example').objects()
if o.key.startswith('training_data/cats')]
这会为您提供此类猫咪的清单。
或者,您可以使用Objects
类:
cats = [o.key for o in storage.Objects('test-monkeys-example', '', '')
if o.key.startswith('training_data/cats')]
如果您不需要放入变量的列表,可以使用%gcs
魔法,这样更容易:
%gcs list -o gs://test-monkeys-example/training_data/cats/*
这将打印键的HTML表。请注意,这是一个完整的GCS路径,从gs://
开始。