代码之家  ›  专栏  ›  技术社区  ›  Mitchell

是否可以像在终端中使用'ls'命令一样查询谷歌云存储?

  •  2
  • Mitchell  · 技术社区  · 6 年前

    我使用python库查询Google云存储,并使用命名层次结构组织存储中的信息。例如:

    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”目录中的版本,而不包含simulations下面的所有Blob?

    作为参考,这将以分页方式返回所有blob:

    cursor = bucket.list_blobs(prefix='simulations')
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   arudzinska    6 年前

    我和 prefix delimiter 的参数 list_blobs 方法和此代码起作用:

    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/ 目录中,将省略这些文件。