【问题标题】:python how to concat stringio objects?python如何连接stringio对象?
【发布时间】:2015-06-29 05:15:08
【问题描述】:

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

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

【问题讨论】:

    标签: python concatenation stringio cstringio


    【解决方案1】:

    一组 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())
    

    【讨论】:

    • 我还想考虑编写一个类,该类可以将一组 io 对象附加到内部序列/列表中,并将读取调用向下传递给 io 对象,直到它们耗尽并处理切换透明地列出清单;就好像它是一个大的 io 对象。
    【解决方案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'
    

    【讨论】:

      猜你喜欢
      • 2013-12-03
      • 2011-05-18
      • 1970-01-01
      • 2019-05-21
      • 2016-02-28
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      相关资源
      最近更新 更多