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

时间:2016-02-20 14:43:07

标签: python file io package 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>

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

我理解io.StringIO的目的是错误的吗?或者只是做错了?

1 个答案:

答案 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
  •