PythonでGCSのオブジェクトをフォルダかどうか判定する
オブジェクトストレージってフォルダを作る概念はあるけど、実際はフォルダの概念は無いからAPIも用意されてないんですよね。
でもisdirって書きたい時あるよね? で、調べたら出てきて日本語の情報がなかったので書いておきます。
とりあえずこれがコード
def list_gcs_directories(bucket, prefix): # from https://github.com/GoogleCloudPlatform/google-cloud-python/issues/920 iterator = bucket.list_blobs(prefix=prefix, delimiter='/') prefixes = set() for page in iterator.pages: print page, page.prefixes prefixes.update(page.prefixes) return prefixes
そしてこれが該当のリンク
List subdirectories · Issue #920 · googleapis/google-cloud-python · GitHub
ただ自分が実装した時こっちのコードでしか動作しなかった、あまりオススメはできませんが貼っておきます。
List subdirectories · Issue #920 · googleapis/google-cloud-python · GitHub
ちなみに、luigiのGCSの実装を真似ればもっと綺麗にできます。
難点としてライブラリを google.cloud.storage から googleapiclient に変更しないといけない。