是否可以查询 Google Cloud Storage 类似于在终端中使用 ls 命令?
Is it possible to query Google Cloud Storage similar to using `ls` command in terminal?
我正在使用 python 库查询 Google Cloud Storage,并且我正在使用命名层次结构在 Storage 中组织信息。例如:
my_bucket/simulations/version_1/data...
my_bucket/simulations/version_2/data...
my_bucket/simulations/version_3/data...
my_bucket/other_data/more_data...
我的问题是:是否可以使用 list_blobs
或其他一些方法进行查询以检索仅包含 "simulations" 目录中的版本的列表,而不是模拟下的所有 blob ?
供参考,此 returns 所有 blob 均采用分页方式:
cursor = bucket.list_blobs(prefix='simulations')
我试过 list_blobs
方法的 prefix
和 delimiter
参数,这段代码有效:
from google.cloud import storage
def ls(bucket_name, prefix, delimiter):
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
cursor = bucket.list_blobs(prefix=prefix, delimiter=delimiter)
for blob in cursor:
pass
for prefix in cursor.prefixes:
print prefix
ls(your_bucket_name, 'simulations/', '/')
输出:
simulations/version-1/
simulations/version-2/
simulations/version-3/
请注意,这只会显示 simulations/
目录中的 目录 的名称,文件将被省略。
我正在使用 python 库查询 Google Cloud Storage,并且我正在使用命名层次结构在 Storage 中组织信息。例如:
my_bucket/simulations/version_1/data...
my_bucket/simulations/version_2/data...
my_bucket/simulations/version_3/data...
my_bucket/other_data/more_data...
我的问题是:是否可以使用 list_blobs
或其他一些方法进行查询以检索仅包含 "simulations" 目录中的版本的列表,而不是模拟下的所有 blob ?
供参考,此 returns 所有 blob 均采用分页方式:
cursor = bucket.list_blobs(prefix='simulations')
我试过 list_blobs
方法的 prefix
和 delimiter
参数,这段代码有效:
from google.cloud import storage
def ls(bucket_name, prefix, delimiter):
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
cursor = bucket.list_blobs(prefix=prefix, delimiter=delimiter)
for blob in cursor:
pass
for prefix in cursor.prefixes:
print prefix
ls(your_bucket_name, 'simulations/', '/')
输出:
simulations/version-1/
simulations/version-2/
simulations/version-3/
请注意,这只会显示 simulations/
目录中的 目录 的名称,文件将被省略。