stdout をキャプチャして、関数を呼び出した後に解析しようとしています。私は cStringIO.StringIO オブジェクトを使用してこれを行っていますが、readline 呼び出しでは何も得られません。何が起こっているかを示すために、以下のテストを作成しました。
import cStringIO, sys
def readstream(s):
c = s.getvalue()
for i in c.split('\n'):
yield i
old_stdout = sys.stdout
stream = cStringIO.StringIO()
sys.stdout = stream
print ('testing this stuff')
print ('more testing of this')
sys.stdout = old_stdout
print 'getvalue:'
print stream.getvalue()
print 'readlines:'
for line in stream.readlines():
print line
print 'readstream:'
for line in readstream(stream):
print line
生成される出力は次のとおりです。
getvalue:
testing this stuff
more testing of this
readlines:
readstream:
testing this stuff
more testing of this
stream.readlines() が何も生成しないのはどうしてですか?
ありがとう