使用 io.StringIO 将字符串作为文件读取
read string as a file using io.StringIO
我需要制作一个字符串供 bibtexparser
的 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
的目的?还是只是做错了?
根据 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
我需要制作一个字符串供 bibtexparser
的 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
的目的?还是只是做错了?
根据 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