С клиентом Google Cloud Storage я не смог прочитать файл Storage как объект, как того требует lxml.etree.parse. Я мог прочитать файл облачного хранилища как большой двоичный объект, но он плохо работал с lxml.
Я пытаюсь конвертировать XML-файлы, используя XSLT-файл. Я хочу использовать облачную функцию Google (в Python3.7), которая будет активирована, как только файл XML будет загружен в облачное хранилище. Я пробовал этот код, храня файлы локально, и он работает. Однако нужен способ заставить это работать и с облачным хранилищем.
----Using local files (Working Code):
import lxml.etree as ET
filename = "C:\\GCP\\Files\\Profile.xml"
xsltfile = "C:\\GCP\\Files\\Transform.xslt"
outpath = "C:\\GCP\\Files\\Output\\Output.json"
dom = ET.parse(filename)
xslt = ET.parse(xsltfile)
transform = ET.XSLT(xslt)
newdom = transform(dom)
xdom = str(newdom)
text_file = open(outpath, "w")
text_file.write(xdom)
text_file.close()
----Using Cloud storage(not working):
from google.cloud import storage
import lxml.etree as ET
client = storage.Client()
bucket = client.get_bucket('customerfile02')
xmlblob = bucket.blob('testprofile.xml')
inputxml=xmlblob.download_as_string()
xmldom = ET.parse(inputxml)
Error: failed to load external entity
Ошибка ожидается, так как я передаю XML-строку вместо File Object, как ожидается ET.parse
Как я могу передать файловый объект из облачного хранилища, чтобы заставить это работать?