Google Cloud Storage: Как удалить папку (рекурсивно) в Python - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь удалить папку в GCS и все ее содержимое (включая подкаталоги) с его библиотекой Python.Также я понимаю, что в GCS нет папок (но с префиксом?), Но мне интересно, как я могу это сделать?

Я тестировал этот код:

from google.cloud import storage

def delete_blob(bucket_name, blob_name):
    """Deletes a blob from the bucket."""
    storage_client = storage.Client()
    bucket = storage_client.get_bucket(bucket_name)
    blob = bucket.blob(blob_name)

    blob.delete()

delete_blob('mybucket', 'top_folder/sub_folder/test.txt')
delete_blob('mybucket', 'top_folder/sub_folder/')

Первый вызов delete_blobработал но не 2й.Что я могу удалить папку рекурсивно?

1 Ответ

0 голосов
/ 13 октября 2018

Чтобы удалить все, начиная с определенного префикса (например, имя каталога), вы можете перебрать список:

storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
blobs = bucket.list_blobs(prefix='some/directory')
for blob in blobs:
  blob.delete()

Обратите внимание, что для очень больших сегментов с миллионами или миллиардами объектов этоможет быть не очень быстрый процесс.Для этого вам нужно сделать что-то более сложное, например, удалить в нескольких потоках или использовать правила конфигурации жизненного цикла, чтобы организовать удаление объектов.

...