使用 io.StringIO 将字符串作为文件读取

read string as a file using io.StringIO

我需要制作一个字符串供 bibtexparserparsing_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>

所以,显然,fakefile 是 io.StringIO,而不是 Fake 文件。

我是不是理解错了io.StringIO的目的?还是只是做错了?

根据 bibtexparser class 的文档,我认为您应该使用 .loads 方法,该方法 returns 来自输入 [=20] 的 BibDatabase 对象=]字符串或 unicode。 (这不同于需要文件对象的 load 方法)

https://bibtexparser.readthedocs.org/en/v0.6.2/_modules/bibtexparser.html#loads

bibtexparser.loads(bibtex_str, parser=None)

Load BibDatabase object from a string

Parameters:

  • bibtex_str (str or unicode) – input BibTeX string to be parsed
  • parser (BibTexParser) – custom parser to use (optional)

Returns:

  • bibliographic database object

Return type:

  • BibDatabase