Использование python для написания команд оболочки Google Cloud SDK - PullRequest
0 голосов
/ 08 апреля 2020

Я создал бота, работающего на облачной виртуальной машине Google. У меня все работает, и чтобы получить доступ к данным, которые пишет мой бот, мне нужно go открыть оболочку Google Cloud SDK и набрать:

gsutil cp gs://bucket_name/file.xlsx C:\\Users\\User\\Documents\\file.xlsx

Весь смысл в том, чтобы я пытался создать бота на стороннем сервере, чтобы максимально автоматизировать процесс. Поэтому мне было интересно, есть ли у меня какой-нибудь способ написать скрипт python, который говорит G C SDK Shell выполнить вышеупомянутую команду. Или даже лучше: запустить команду выше, когда я открою определенный файл Excel? может быть, последнее слишком хорошо, чтобы быть правдой, хотя. Дайте мне знать, что вы думаете, спасибо!

Python код:

import google
from google.cloud import storage

def download_blob(bucket_name, source_blob_name, destination_file_name):
    bucket_name = "gs://bot-example"
    source_blob_name = "Koersen.xlsx"
    destination_file_name = "C:\\Users\\User\\Documents\\Koersen.xlsx"

    storage_client = storage.Client()

    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(source_blob_name)
    blob.download_to_filename(destination_file_name)```

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Несколько вещей, которые я заметил, изучая ваш код:

  1. Я не вижу, чтобы вы на самом деле вызывали функцию download_blob () .
  2. Помните, что ваша функция принимает 3 параметра: имя_хранилища , имя_источника_блока , имя_файла_ назначения . Они должны быть указаны при вызове функции.
  3. имя_хранилища должно иметь имя вашего сегмента, а не ссылку на gsutil.

Я изменил этот пример соответствующим образом и протестировал его. Вот что должно работать:

from google.cloud import storage


bucket_name = "<BUCKET-NAME>"
source_blob_name = "<FILE-NAME>"
destination_file_name = "<PATH-TO-THE-DESTINATION-FILE>"


def download_blob(bucket_name, source_blob_name, destination_file_name):
    """Downloads a blob from the bucket."""

    storage_client = storage.Client()

    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(source_blob_name)
    blob.download_to_filename(destination_file_name)
    print(
        "Blob {} downloaded to {}.".format(
            source_blob_name, destination_file_name
        )
    )


download_blob(bucket_name, source_blob_name, destination_file_name)
0 голосов
/ 09 апреля 2020

Пример кода с использованием Python для загрузки объекта file.xlsx в локальный каталог C:\\Users\\User\\Documents\\file.xlsx из корзины Cloud Storage gs://bucket_name:

from google.cloud import storage


def download_blob(bucket_name, source_blob_name, destination_file_name):

    """Downloads a blob from the bucket."""
    bucket_name = "gs://bucket_name"
    source_blob_name = "file.xlsx"
    destination_file_name = "C:\\Users\\User\\Documents\\file.xlsx"

    storage_client = storage.Client()

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

    print(
        "Blob {} downloaded to {}.".format(
            source_blob_name, destination_file_name
        )
    )

Подробнее о Cloud Storage для Python можно найти в документации .

Что касается вашего вопроса Excel, вы можете go опередить и использовать библиотеку openpyxl и соответственно скорректировать свой код.

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