首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

StringIO

这个模块实现了一个文件类,StringIO它读取和写入字符串缓冲区(也称为内存文件)。请参阅文件对象的操作说明(文件对象部分)。(对于标准字符串,请参阅strunicode。)

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。

用法示例:

代码语言:javascript
复制
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。请参阅模块来源获取更多信息。

用法示例:

代码语言:javascript
复制
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()

扫码关注腾讯云开发者

领取腾讯云代金券