在python;将文件列表转换为像对象一样的文件

时间:2010-08-31 18:20:29

标签: python text

呃,所以我正在处理解析器等问题,而且我将从一个处理文件的东西转到另一个。

我的代码的第一部分的输出是一个字符串列表;我认为每个字符串都是文本文件中的一行。

代码的第二部分需要一个文件类型作为输入。

所以我的问题是,有没有一种正确的,pythonic的方式将字符串列表转换为像对象一样的文件?

我可以将我的字符串列表写入文件,然后重新打开该文件,它可以正常工作,但如果没有必要,写入磁盘似乎有点傻。

我相信所有第二部分需要的是在文件上调用'read()'就像对象一样,所以我也可以用read作为方法定义一个新类,它返回一个长字符串,这是串联的所有的线串。

感谢, -nick

2 个答案:

答案 0 :(得分:9)

StringIO实现(几乎)所有stdio方法。例如:

>>> 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'

答案 1 :(得分:3)

您可以在列表中使用StringIO和str.join,即

import StringIO
f = StringIO.StringIO("\n".join(lines))

假设行是你的行列表