Python中的StringIO实际用途是什么?
StringIO到底是用来干嘛的?
我在网上找了一些例子,但几乎所有的例子都很抽象。它们只是展示了“怎么用”,却没有说明“为什么”和“在什么情况下”应该使用它。
另外,不要和这个问题搞混了:StringIO的用法,那个问题是比较字符串和StringIO的。
8 个回答
20
如果你想要一个像文件一样的对象,但它实际上是在内存中写入一个字符串缓冲区,那么可以使用StringIO这个工具。如果你在构建很大的字符串,比如纯文本文件,并且需要频繁地拼接字符串,使用StringIO会比不断地用mystr += '更多内容\n'
这样的方式要简单得多。
41
StringIO 让你可以像操作文件一样操作字符串,这样你就可以使用现有的处理文件的模块,几乎不需要改动就能让它和字符串一起工作。
举个例子,假设你有一个记录器,它会把信息写入一个文件,但你想把日志输出发送到网络上。你可以先读取文件,然后把内容写到网络上,或者你可以把日志写入一个 StringIO 对象,然后直接把它发送到网络目的地,而不需要接触文件系统。使用 StringIO,你可以很方便地先用第一种方法,然后再切换到第二种方法。
104
这个内容是说,当你有一个只接受文件的API,但你需要用字符串的时候,就会用到这个方法。举个例子,如果你想用Python 2中的gzip模块来压缩一个字符串,你可以这样做:
import gzip
import StringIO
stringio = StringIO.StringIO()
gzip_file = gzip.GzipFile(fileobj=stringio, mode='w')
gzip_file.write('Hello World')
gzip_file.close()
stringio.getvalue()