Операция чтения / записи объекта Google Cloud Storage из App Engine - PullRequest
0 голосов
/ 05 августа 2020

Я получаю доступ к объекту в Google Cloud Storage из своего приложения App Engine Standard Python 3, загружаю объект в папку / tmp, редактирую его, а затем загружаю этот отредактированный объект обратно в Google Storage:

from google.cloud import storage

def download_blob(bucket_name, source_blob_name, destination_file_name):
    """Downloads a blob from the bucket."""
    # bucket_name = "your-bucket-name"
    # source_blob_name = "storage-object-name"
    # destination_file_name = "local/path/to/file"

    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(source_blob_name)
    blob.download_to_filename(destination_file_name)

def upload_blob(bucket_name, source_file_name, destination_blob_name):
    """Uploads a file to the bucket."""
    # bucket_name = "your-bucket-name"
    # source_file_name = "local/path/to/file"
    # destination_blob_name = "storage-object-name"

    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(destination_blob_name)
    blob.upload_from_filename(source_file_name)

def edit_file(request):
        ... skipped for brevity ...
        download_blob(bucket_name, source_blob_name, destination_file_name)
        with open(source_file_name, "a") as f:
            f.write(f"{x}: {y}: {z}<br>")
        upload_blob(bucket_name, source_file_name, destination_blob_name)

Есть ли способ редактировать объект напрямую, не загружая его в папку / tmp? Я не смог найти способ для этого

1 Ответ

1 голос
/ 05 августа 2020

Большой двоичный объект в облачном хранилище является неизменяемым объектом. Поэтому вам нужно где-то его скачать и изменить, чтобы создать новый объект, а затем загрузить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...