fork download
  1. import StringIO, sys
  2. from contextlib import contextmanager
  3. from code import InteractiveConsole
  4.  
  5. O = []
  6. E = []
  7.  
  8. @contextmanager
  9. def redirected(out=sys.stdout, err=sys.stderr):
  10. saved = sys.stdout, sys.stderr
  11. sys.stdout, sys.stderr = out, err
  12. try:
  13. yield
  14. finally:
  15. sys.stdout, sys.stderr = saved
  16.  
  17.  
  18. def fun():
  19. runner = InteractiveConsole()
  20. out = StringIO.StringIO()
  21. err = StringIO.StringIO()
  22. i = 0
  23. with redirected(out=out, err=err):
  24. while i<3:
  25. code = raw_input()
  26. code.rstrip('\n')
  27. runner.push(code)
  28. output = out.getvalue()
  29. error = err.getvalue()
  30. i = i+1
  31. O.append(output)
  32. E.append(error)
  33.  
  34. fun()
  35. for i in O:
  36. print i
  37. for i in E:
  38. print i
Success #stdin #stdout 0.09s 10952KB
stdin
aa
bb
print l
stdout


Traceback (most recent call last):
  File "<console>", line 1, in <module>
NameError: name 'aa' is not defined

Traceback (most recent call last):
  File "<console>", line 1, in <module>
NameError: name 'aa' is not defined
Traceback (most recent call last):
  File "<console>", line 1, in <module>
NameError: name 'bb' is not defined

Traceback (most recent call last):
  File "<console>", line 1, in <module>
NameError: name 'aa' is not defined
Traceback (most recent call last):
  File "<console>", line 1, in <module>
NameError: name 'bb' is not defined
Traceback (most recent call last):
  File "<console>", line 1, in <module>
NameError: name 'l' is not defined