在Python中;将文件列表转换为类文件对象

2 投票
1 回答
3995 浏览
提问于 2025-04-16 03:32

呃,我正在处理一些解析器,正在从一个处理文件的部分转到另一个部分。

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

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

所以我的问题是,有没有一种合适的、符合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'

撰写回答