我有这段代码在 Python 2.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 行 执行(stmt,全局(),全局()) 文件“”,第 3 行,在 TypeError:需要字符串参数,得到'str'