Я пытаюсь создать power-point в своем приложении на python 2.7 и загрузить его на лету в Google Cloud Storage.
Я могу создать ppt, сохранить на локальном жестком диске в качестве промежуточного шага, а затем забрать его для загрузки в облачное хранилище Google.Это хорошо работает.Однако мое производственное приложение будет работать на сервере приложений Google, поэтому я хочу иметь возможность создавать PowerPoint и загружать его в Google Storage напрямую (без промежуточного шага).
Есть идеи, как это сделать?Похоже, что blob.upload_from_file () может извлекать только те файлы, которые где-то физически хранятся, но поскольку мое приложение строит эти powerpoints, я не знаю, что передать в качестве аргумента blob.upload_from_file?Я пытался использовать модуль StringIO, но он генерирует сообщение об ошибке ниже.
from google.cloud import storage
from pptx import Presentation
from StringIO import StringIO
prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = "Hello, World!"
subtitle.text = "python-pptx was here!"
out_file = StringIO()
prs.save(out_file)
client = storage.Client()
bucket = client.get_bucket([GCP_Bucket_Name])
blob = bucket.blob('test.pptx')
blob.upload_from_file(out_file)
print blob2.public_url
ValueError: Поток должен быть в начале.