我正在研究MOOC的数据集.我有很多python3代码片段,我需要运行并从中获取结果.为此,我编写了一个循环遍历每个片段的python脚本.对于每个片段我:
sys.stdout和sys.stderr我的stringIO缓冲区threading.thread对象中执行代码段这适用于"正确"的代码,但在其他情况下这有问题:
print(),当我将其设置回默认值(远离StringIO缓冲区)时,线程开始覆盖我的实际标准输出.这会污染我的报告.这是我目前的代码:
def execCode(code, testScript=None):
# create file-like string to capture output
codeOut = io.StringIO()
codeErr = io.StringIO()
# capture output and errors
sys.stdout = codeOut
sys.stderr = codeErr
def worker():
exec(code, globals())
if testScript:
# flush stdout/stderror
sys.stdout.truncate(0)
sys.stdout.seek(0)
# sys.stderr.truncate(0)
# sys.stderr.seek(0)
exec(testScript)
thread = threading.Thread(target=worker, daemon=True)
# thread = Process(target=worker) #, stdout=codeOut, stderr=codeErr)
thread.start()
thread.join(0.5) # 500ms
execError = codeErr.getvalue().strip() …Run Code Online (Sandbox Code Playgroud) 我已经定义了一个具有初始值的变量.
单步执行代码时:
怎么了?
注意:这是针对常见问题的参考问题.如果此处的通用答案对您没有帮助,请发布包含完整实际代码的问题.