在Python中;将文件列表转换为类文件对象
呃,我正在处理一些解析器,正在从一个处理文件的部分转到另一个部分。
我代码的第一部分输出的是一个字符串列表;我把每个字符串看作是文本文件中的一行。
代码的第二部分需要一个文件类型的输入。
所以我的问题是,有没有一种合适的、符合Python风格的方法,把字符串列表转换成一个像文件一样的对象?
我可以把字符串列表写入一个文件,然后再重新打开那个文件,这样是可以的,但如果没有必要,写入磁盘感觉有点傻。
我认为第二部分只需要在这个像文件的对象上调用'read()',所以我也可以定义一个新类,里面有一个方法叫'read',它返回一个长字符串,这个字符串是所有行字符串的拼接。
谢谢,
-nick
1 个回答
12
StringIO
是一个可以实现几乎所有标准输入输出方法的工具。举个例子:
>>> import StringIO
>>> StringIO.StringIO("hello").read()
'hello'
cStringIO 是一个更快的版本。
如果你想把一个字符串列表合并成一个字符串,只需要用 join
方法把它们连接起来:
>>> list_of_strings = ["hello", "line two"]
>>> handle = StringIO.StringIO('\n'.join(list_of_strings))
>>> handle.read()
'hello\nline two'