我需要让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>
所以,很明显,fakefile是io.StringIO
,而不是Fake
文件。
我理解io.StringIO
的目的是错误的吗?或者只是做错了?
答案 0 :(得分:1)
根据bibtexparser类的文档,我认为您应该使用.loads
方法,该方法从输入字符串或unicode 返回BibDatabase
对象。 (这与需要文件对象的load
方法不同)
https://bibtexparser.readthedocs.org/en/v0.6.2/_modules/bibtexparser.html#loads
bibtexparser.loads(bibtex_str, parser=None)
从字符串
加载BibDatabase对象参数:
- bibtex_str(str或unicode) - 输入要解析的BibTeX字符串
- parser(BibTexParser) - 要使用的自定义解析器(可选)
退货:
- 书目数据库对象
返回类型:
- BibDatabase