Читать строку как файл, используя 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
Другие вопросы по тегам