因为我不想将变量传递给修改其输入变量的函数;我有几个函数返回新的StringIO.StringIO()对象,每个都有一些文本输出。我想将这些输出连接成一个长字符串对象。
给定函数report1
和report2
返回新填充的StringIO对象,你会如何连接它们?
答案 0 :(得分:1)
循环并将它们的值连接在一起:
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())
答案 1 :(得分:1)
您也可以将一个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'