私はPython2.5では正常に動作するが2.7では動作しないこのコードを持っています:
import sys
import traceback
try:
from io import StringIO
except:
from StringIO import StringIO
def CaptureExec(stmt):
oldio = (sys.stdin, sys.stdout, sys.stderr)
sio = StringIO()
sys.stdout = sys.stderr = sio
try:
exec(stmt, globals(), globals())
out = sio.getvalue()
except Exception, e:
out = str(e) + "\n" + traceback.format_exc()
sys.stdin, sys.stdout, sys.stderr = oldio
return out
print "%s" % CaptureExec("""
import random
print "hello world"
""")
そして私は得る:
文字列引数が必要です、'str'を取得しました
トレースバック(最後の最後の呼び出し):
CaptureExecのファイル「D:\ 3.py」、13行目
exec(stmt、globals()、globals())
ファイル""、3行目、
TypeError:文字列引数が必要です。'str'を取得しました