4

因为我不想将变量传递给修改其输入变量的函数;我有几个函数返回新的 StringIO.StringIO() 对象,每个都有一些文本输出。我想将这些输出连接到一个长字符串对象中。

给定函数report1report2返回新的填充 StringIO 对象,您将如何连接它们?

4

2 回答 2

3

一组 io 对象的离散连接

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

main_output = StringIO.StringIO()

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

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

不断地

知道您正在获取 stringio 对象,获取它们的 sting 值并立即将其写入您的主 stringio 对象。

main_output = StringIO.StringIO()

main_output.write(report1().getvalue())
main_output.write(report2().getvalue())
于 2015-04-21T20:26:39.623 回答
2

您还可以将一个 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'
于 2018-04-02T21:14:08.297 回答