Как загрузить следующую гистограмму в корзину, не сохраняя ее на диске, чтобы затем использовать ее в облачной функции? - PullRequest
0 голосов
/ 24 мая 2019

Здравствуйте, так как я разрабатываю одну облачную функцию python для построения гистограммы из CSV, хранящегося в корзине,

Я пытался сделать следующее:

def plot(event, context):
    client = storage.Client()
    csv = client.bucket(event['bucket']).blob(event['name']).download_as_string()
    df = pd.read_csv(io.BytesIO(csv), index_col=0)
    objects = df['filepart']
    y_pos = np.arange(len(objects))
    performance = df['confidence']
    plt.bar(y_pos, performance, align='center', alpha=0.99,color='blue')
    plt.xticks(y_pos, objects,rotation=90)
    plt.ylabel('')
    plt.title('')

здесь я сохраняю изображение на диск:

    plt.savefig('foo.png')
    my_bucket = "clusters_sklearn"

затем я загружаю файл с именем файла следующим образом в мое ведро:

    client = get_client()
    bucket = client.get_bucket(my_bucket)
    bucket.blob("foo.png").upload_from_filename("foo.png")
    with open("foo.png", "rb") as my_file:
        bucket.blob("foo.png").upload_from_file(my_file)

Однако, чтобы использовать эту функцию в облачной функции, так как из-за этого у меня нет доступа к физическому диску, мне нужно изменить эту часть:

    plt.savefig('foo.png')

А также изменить способ загрузки с диска в корзину:

    bucket.blob("foo.png").upload_from_filename("foo.png")
    with open("foo.png", "rb") as my_file:
        bucket.blob("foo.png").upload_from_file(my_file)

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

мой полный код выглядит заранее, спасибо:

def plot(event, context):
    client = storage.Client()
    csv = client.bucket(event['bucket']).blob(event['name']).download_as_string()
    df = pd.read_csv(io.BytesIO(csv), index_col=0)
    objects = df['filepart']
    y_pos = np.arange(len(objects))
    performance = df['confidence']
    plt.bar(y_pos, performance, align='center', alpha=0.99,color='blue')
    plt.xticks(y_pos, objects,rotation=90)
    plt.ylabel('')
    plt.title('')
    plt.savefig('foo.png')
    my_bucket = "clusters_sklearn"
    client = get_client()
    bucket = client.get_bucket(my_bucket)
    bucket.blob("foo.png").upload_from_filename("foo.png")
    with open("foo.png", "rb") as my_file:
        bucket.blob("foo.png").upload_from_file(my_file)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...