Разбор папки xml с использованием glob и lxml - PullRequest
0 голосов
/ 01 июня 2018

У меня возникли некоторые трудности при попытке проанализировать папку действительных XML-файлов (*.ditamap) с использованием Python 3 и lxml.

Возвращена ошибка:

"lxml.etree.XMLSyntaxError: Document is empty, line 1, column 1"

мой код

import glob
import lxml.etree as et

for file in glob.glob('*.ditamap'):
    with open(file) as xml_file:
        #tree = et.parse("0579182.ditamap")
        tree = et.parse(xml_file)
        print (et.tostring(tree, pretty_print=True))

et.parse работает, когда я передаю имя файла напрямую, но не когда я передаю переменную файла.

Что я делаю не так?Похоже, что какая-то ошибка ввода-вывода или несоответствие tpye, но я не вижу, что я делаю неправильно ...

1 Ответ

0 голосов
/ 01 июня 2018

et.parse ожидает имя файла, но вы даете ему открытый файл.Попробуйте передать file переменную.

import glob
import lxml.etree as et

for f in glob.glob('*.ditamap'):
    tree = et.parse(f)
    print (et.tostring(tree, pretty_print=True))

Возможно, вы захотите использовать glob.iglob , потому что вы используете его только в качестве итератора.

Редактировать: Перечитано, что et.parse может распознавать объекты файла.Тем не менее, попробуйте.

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