In [4]: f = io.BytesIO('test')
In [5]: type(f.read())
Out[5]: str
In [6]: f = io.StringIO(u'test')
In [7]: type(f.read())
Out[7]: unicode
Python3:
In [2]: f = io.BytesIO(b'test')
In [3]: type(f.read())
Out[3]: builtins.bytes
In [4]: f = io.StringIO('test')
In [5]: type(f.read())
Out[5]: builtins.str
您可能需要考虑使用^{} ,这将为您提供最好的两个世界,因为它最初将创建一个基于内存的临时虚拟文件,但如果内存中保存的数据超过指定的大小,它将自动切换到基于物理磁盘的文件。
另一个不错的特性是(使用内存时),它将自动使用^{} 或^{} ,这取决于使用的
mode
是什么,允许您读写Unicode字符串或二进制数据(字节)。唯一棘手的部分可能是您需要避免在两个步骤之间关闭文件,因为这样做会导致文件从内存或磁盘中删除。相反,您可以使用一个文件^{} 方法调用将其回放到开头。
当您完全处理完该文件并将其关闭时,如果其中的数据量导致该文件回滚到物理文件,则会自动将其从磁盘中删除。
在
io
模块中有StringIO
和BytesIO
。StringIO
的行为类似于以文本模式打开的文件-读取和写入unicode字符串(相当于使用io.open(filename, mode, encoding='...')
打开文件),而BytesIO
的行为类似于以二进制模式打开的文件(mode='[rw]b'
),并且可以读取和写入字节。Python2:
Python3:
你可以用StringIO作为虚拟文件, 来自官方documentation
相关问题 更多 >
编程相关推荐