Как открыть файл XML с помощью клиента Python для облачного хранилища Google - PullRequest
0 голосов
/ 16 апреля 2019

Я абсолютный новичок, и у меня нет другого способа решить эту проблему, поэтому мне нужно сделать это с помощью Python. Мне нужно разобрать xml-файл. Это прекрасно работает, когда файл хранится локально. Но мне нужно иметь возможность открыть файл в Google Cloud Storage.

Пожалуйста, смотрите мой код. Я не знаю, как передать BLOB-объект в качестве имени файла в ElementTree. Если я использую blob.download_as_string (), я получаю содержимое XML-файла в качестве имени. Какой путь слишком длинный и неверный путь к файлу.

import xml.etree.ElementTree as ET
from google.cloud import storage
client = storage.Client()

#My bucket
bucket = client.get_bucket('import')

# This is my file
blob = bucket.get_blob('/xml/Profit.xml')

xml_file = blob.download_as_string()
#xml_file is now looooong string and not what I want

root = ET.parse(xml_file)
#This doesnt work...

result = ''

for elem in root.findall('.//LEVEL1/DATA'):
    mystr = elem.text.replace(" ","").replace("+","").replace("-","")
    print mystr.replace(" ","").replace("+","").replace("-","")

Я ожидаю, что переменная xml_file будет содержать путь к файлу в моем сегменте. Или найдите способ разобрать содержимое файла.

Любые предложения, которые указывают мне правильные направления, приветствуются.

Ура, Cris

1 Ответ

2 голосов
/ 16 апреля 2019

Прочитать файл и разобрать его:

import cloudstorage as gcs
import xml.etree.ElementTree as ET

# The filename argument is specified in the format of YOUR_BUCKET_NAME/PATH_IN_GCS
gcs_file = gcs.open(filename)
contents = gcs_file.read()
gcs_file.close()

root = ET.fromstring(contents)
...