Python如何连接StringIO对象?

4
因为我不想涉及传递变量到修改其输入变量的函数中;我有几个函数,它们返回一些文本输出的新StringIO.StringIO()对象。我希望将这些输出连接成一个长的stringio对象。
给定函数report1report2,它们返回新的填充StringIO对象,如何将它们连接起来?
2个回答

4

一组io对象的离散连接

循环并将它们的值连接在一起:

main_output = StringIO.StringIO()

outputs = list()
outputs.append(report1())
outputs.append(report2())

main_output.write(''.join([i.getvalue() for i in outputs]))

持续优化

请注意,您正在获取stringio对象,请获取其字符串值并立即将其写入主stringio对象。

main_output = StringIO.StringIO()

main_output.write(report1().getvalue())
main_output.write(report2().getvalue())

我还想考虑编写一个类,该类可以将一组io对象附加到内部序列/列表中,并将读取调用传递到io对象,直到它们耗尽并透明地处理列表切换;就像是一个大的io对象。 - ThorSummoner

2

您也可以将一个StringIO写入另一个StringIO。

In [58]: master_io = StringIO()

In [59]: temp_io = StringIO()

In [60]: temp_io.write("one,two,three\n")

In [61]: temp_io.reset()

In [62]: master_io.write(temp_io.read())

In [63]: master_io.reset()

In [64]: master_io.read()
Out[64]: 'one,two,three\n'

In [65]: temp_io.reset()

In [66]: temp_io.truncate()

In [68]: temp_io.write('four,five,six\n')

In [69]: temp_io.reset()

In [70]: master_io.write(temp_io.read())

In [71]: master_io.reset()

In [72]: master_io.read()
Out[72]: 'one,two,three\nfour,five,six\n'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接