Читать строку как файл, используя io.StringIO
Мне нужно сделать строку для чтения bibtexparser
"s parsing_read
, Насколько я понял модуль, он читает только файл, а не поток, поэтому я сделал:
text = "Some text"
with open("/tmp/bibtmp.bib", "w") as bibfile:
bibfile.write(text)
self.parsing.parsing_read("/tmp/bibtmp.bib")
Но я пытаюсь заставить его читать строку, и пытаюсь io.StringIO
модуль как:
fakefile = io.StringIO("SomeText")
self.parsing.parsing_read(fakefile)
который выдает ошибку (из self.parsing.parsing_read, который открывает файл):
TypeError: invalid file: <_io.StringIO object at 0x7fb4d6537ca8>
Так что, очевидно, фэйкфайл io.StringIO
и не Fake
файл.
Я понимаю io.StringIO
неверная цель? или просто делаешь неправильно?
1 ответ
Основываясь на документации из класса bibtexparser, я думаю, что вы должны использовать .loads
метод, который возвращает BibDatabase
объект из входной строки или Unicode. (Это отличается от load
метод, который требует файловый объект)
https://bibtexparser.readthedocs.org/en/v0.6.2/_modules/bibtexparser.html
bibtexparser.loads(bibtex_str, parser=None)
Загрузить объект BibDatabase из строки
Параметры:
- bibtex_str (str или unicode) - ввод строки BibTeX для анализа
- parser (BibTexParser) - пользовательский анализатор для использования (необязательно)
Возвращает:
- библиографический объект базы данных
Тип возврата:
- BibDatabase