Создание папок в ведре облачного хранилища Google с помощью Python

Я пытаюсь создать новое ведро с двумя пустыми папками в хранилище Google Cloud, используя клиентскую библиотеку python.

Я сослался на API клиентской библиотеки python для GCS (https://google-cloud-python.readthedocs.io/en/latest/storage/client.html) и нашел метод create_bucket(), но я также хотел бы создать в нем 2 папки - «обработанные» и «необработанные», но не смог найти метод для создания папок. . Любая помощь будет оценена по достоинству.

Спасибо

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
4 677
2

Ответы 2

GCS имеет плоское пространство имен, то есть концепция «папки» не встроена в сервис, а скорее является абстракцией, реализованной различными клиентами. Например, как веб-интерфейс Cloud Storage (console.cloud.google.com/storage/browser), так и gsutil реализуют абстракцию папки, используя имя объекта, которое заканчивается на "/" Таким образом, вы можете создавать папки, создавая такие объекты, как your-bucket / abc / def / но это будет папка только для клиентов, которые знают / поддерживают это соглашение об именах.

Спасибо, Майк! Я понимаю это, хотя хотел бы заранее иметь структуру папок и каждый день создавать новые папки. Я могу воспользоваться вашим предложением, назвав файлы в соответствии с соглашением при их загрузке. Однако как я могу перемещать файлы из одной папки в другую в одном ведре с помощью клиентского API Python?

Parth Desai 21.05.2018 22:20

Идея состоит в том, что я хочу иметь 2 папки (необработанные и обработанные), чтобы я мог сначала сохранить входные файлы в «необработанной» папке, обработать их с помощью потока данных и сохранить данные в bigquery, а затем, наконец, переместить файлы в «обработанную» папку. после завершения задания потока данных, чтобы в следующий раз, когда я запустил то же задание ETL потока данных, оно забирало файлы только из «необработанной» папки.

Parth Desai 21.05.2018 22:47

+ Parth-desai Похоже, Майк уже ответил на ваш первоначальный вопрос. Я бы отметил его ответ как решение и создал новый пост для другого вопроса. Вы можете упомянуть меня в комментарии под вопросом, и я отвечу на него, как только увижу его.

A.Queue 22.05.2018 11:11
def copyFilesInFolder(self, file_name, src_blob_name, destination_blob_name):
    """Copies a blob from one bucket to another with a new name."""
    # bucket_name = "your-bucket-name"
    # blob_name = "your-object-name"
    # destination_bucket_name = "destination-bucket-name"
    # destination_blob_name = "destination-object-name"

    # storage_client = storage.Client()

    srcBlob = src_blob_name + '/' + file_name
    destBlob = destination_blob_name + '/' + file_name
    source_blob = self.bucket.blob(srcBlob)
    destination_bucket = storage_client.bucket(destBlob)

    blob_copy = self.bucket.copy_blob(
        source_blob, self.bucket, destBlob
    )
    print(blob_copy)
    print(
        "File {} in bucket {} copied to blob {} in bucket {}.".format(
            file_name,
            src_blob_name,
            file_name,
            destination_blob_name,
        )
    )

    return True

В GCP отсутствует концепция прямого создания папок. Таким образом, мы можем сохранить новый файл в новой папке, таким образом, даже если папка назначения не существует, он будет создан.

Другие вопросы по теме