Python 中文开发手册
StringIO (String) - Python 中文开发手册
这个模块实现了一个文件类,StringIO它读取和写入字符串缓冲区(也称为内存文件)。请参阅文件对象的操作说明(文件对象部分)。(对于标准字符串,请参阅str和unicode。)
class StringIO.StringIO([buffer])
当StringIO对象被创建时,可通过该字符串传递给构造被初始化到一个现有的字符串。如果没有给出字符串,StringIO则将开始为空。在这两种情况下,初始文件位置都从零开始。
StringIO对象可以接受Unicode或8位字符串,但混合这两者可能需要小心。 如果同时使用这两个字符串,那么不能解释为7位ASCII(使用第8位)的8位字符串将在调用getvalue()时引发UnicodeError。
StringIO对象的以下方法需要特别提及:
StringIO.getvalue()
在调用StringIO对象的close()方法之前,随时检索“文件”的全部内容。 有关混合Unicode和8位字符串的信息,请参阅上面的注释; 这种混合可能会导致此方法引发UnicodeError。
StringIO.close()
释放内存缓冲区。 试图用一个封闭的StringIO对象进行进一步的操作会引发一个ValueError。
用法示例:
import StringIO
output = StringIO.StringIO()
output.write('First line.\n')
print >>output, 'Second line.'
# Retrieve file contents -- this will be
# 'First line.\nSecond line.\n'
contents = output.getvalue()
# Close object and discard memory buffer --
# .getvalue() will now raise an exception.
output.close()
模块cStringIO提供了一个类似于StringIO模块的接口。 通过使用来自该模块的函数StringIO(),可以使StringIO.StringIO对象的大量使用变得更高效。
cStringIO.StringIO([s])
返回一个类似StringIO的流以供读取或写入。
由于这是一个返回内置类型对象的工厂函数,因此无法使用子类构建自己的版本。 无法在其上设置属性。 在这些情况下使用原始的StringIO模块。
与StringIO模块不同,此模块无法接受无法编码为纯ASCII字符串的Unicode字符串。
与StringIO模块的另一个区别是,使用字符串参数调用StringIO()会创建一个只读对象。 与没有字符串参数创建的对象不同,它没有写入方法。 这些对象通常不可见。 它们以追溯方式出现为StringI和StringO。
还提供了以下数据对象:
cStringIO.InputType
通过使用字符串参数调用StringIO()创建的对象的类型对象。
cStringIO.OutputType
通过调用StringIO()而不带参数返回的对象的类型对象。
这个模块还有一个C API。请参阅模块来源获取更多信息。
用法示例:
import cStringIO
output = cStringIO.StringIO()
output.write('First line.\n')
print >>output, 'Second line.'
# Retrieve file contents -- this will be
# 'First line.\nSecond line.\n'
contents = output.getvalue()
# Close object and discard memory buffer --
# .getvalue() will now raise an exception.
output.close()