我正在使用一个IO对象(一些STDOUT
输出文本),我试图将它转换为字符串,以便我可以做一些文本处理。我愿做这样的事情:如何将IO对象转换为Ruby中的字符串?
my_io_object = $stdout
#=> #<IO:<STDOUT>>
my_io_object.puts('hi') #note: I know how to make 'hi' into a string, but this is a simplified example
#=>hi
my_io_object.to_s
我已经尝试了几件事情,并得到了一些错误:
my_io_object.read
#=> IOError: not opened for reading
my_io_object.open
#=> NoMethodError: private method `open' called for #<IO:<STDOUT>>
IO.read(my_io_object)
#=> TypeError: can't convert IO into String
我已经通过IO类的方法读,我做不到弄清楚如何处理该对象中的数据。有什么建议么?
“IO错误:没有打开阅读”应该是一个适当的线索。尝试搜索所述错误。 – 2013-03-13 01:55:11
你没有清楚地说出你想要做什么。解释你想要做什么,我们可以给你一个更好的方法来达到目的。你如何获得标准输出文本? – 2013-03-13 05:27:13
谢谢,@theTinMan。对不清楚的道歉 - 这是我的困惑的反映。我最终通过将STDOUT指向一个StringIO对象来解决这个问题。 – MothOnMars 2013-03-13 22:59:37