Как использовать анализатор biblib с файлом bibtex, хранящимся в переменной pyhon? - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть файл bibtex, полученный из внешнего интерфейса, и я пытаюсь проанализировать этот файл с помощью biblib (библиотека python для анализа файлов bibtex). Поскольку я получаю файл из внешнего интерфейса, он не сохраняется в файле на моем компьютере. Файл передается через переменную из внешнего интерфейса в python и затем сохраняется в переменной python fileFromFrontend. Так что я могу использовать, например:

bibtexFile = fileFromFrontend.read(), чтобы прочитать файл.

сейчас я пытаюсь сделать что-то вроде следующего, чтобы напечатать проанализированный файл в терминале python:

from pybtex.database.input import bibtex

parser = bibtex.Parser()
bibtexFile= parser.parse_file(fileFromFrontend)
print (bibtexFile.entries)

, но затем я получаю эту ошибку:

-->bibtexFile = parser.parse_file(filesFromFrontend)
-->with open_file(filename, encoding=self.encoding) as f:
-->AttributeError: __enter__

Вероятно, это связано с тем, что анализатор пытается открыть файл, но ему не нужно открывать этот файл, ему просто нужно прочитать этот файл. Я не знаю, какую функцию из библиотеки biblib использовать для анализа файла из переменной, и пока не нашел ничего, что решило бы мою проблему.

Надеюсь, кто-нибудь сможет помочь

спасибо

1 Ответ

1 голос
/ 27 апреля 2020

Согласно документации (https://docs.pybtex.org/api/parsing.html) есть методы

parse_string и parse_bytes, которые могут работать.

, вот так

from pybtex.database.input import bibtex

parser = bibtex.Parser()
bibtexFile= parser.parse_bytes(fileFromFrontend.read())   
print (bibtexFile.entries)

У меня не установлен pybtex, поэтому я не мог попробовать это сам. Но попробуйте эти методы. Parse_bytes и parse_string требуют формат bib в качестве второго параметра. В примерах это bibtex, поэтому я попробовал это здесь.

...