Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. python_string = """
  2. result_one = len([1,2,3])
  3. print result_one
  4. result_two = range(r)
  5. print result_two
  6. result_three = max(result_two)
  7. print "done"
  8. """
  9. exec(python_string)
  10.  
  11. 3
  12. [0, 1, 2]
  13. done
  14.  
  15. '3'
  16. '[0, 1, 2]'
  17. 'done'
  18.  
  19. result_one = len([1,2,3])
  20. print result_one
  21. result_two = range(r)
  22. print result_two
  23. result_three = max(result_two)
  24. print "done"
  25.  
  26. import sys
  27. import inspect
  28.  
  29. python_string_as_dictionary = dict(enumerate(open(inspect.getfile(inspect.currentframe()), 'r+').read().split("n")))
  30. #>>{0: 'import sys', 1: 'import inspect', 2: '', 3: 'f_dict = dict(enumerate(open(inspect.getfile(inspect.currentframe()), 'r+').read().split("\n")))', 4: 'print f_dict', 5: 'class SetTrace(object):', 6: ' def __init__(self, func):', 7: ' self.func = func', 8: '', 9: ' def __enter__(self):', 10: ' sys.settrace(self.func)', 11: ' return self', 12: '', 13: ' def __exit__(self, ext_type, exc_value, traceback):', 14: ' sys.settrace(None)', 15: '', 16: '', 17: 'def monitor(frame, event, arg):', 18: 'tprint event', 19: 'tprint "line: {}".format(str(frame.f_lineno))', 20: 'tif event == "line" :', 21: 'ttreturn monitor', 22: '', 23: 'python_string = """', 24: 'result_one = len([1,2,3])', 25: 'print result_one', 26: 'result_two = range(result_one)', 27: 'print result_two', 28: 'result_three = max(result_two)', 29: 'print "done"', 30: '"""', 31: 'with SetTrace(monitor):', 32: ' exec(python_string)', 33: '', 34: '', 35: ''}
  31.  
  32. class SetTrace(object):
  33. def __init__(self, func):
  34. self.func = func
  35.  
  36. def __enter__(self):
  37. sys.settrace(self.func)
  38. return self
  39.  
  40. def __exit__(self, ext_type, exc_value, traceback):
  41. sys.settrace(None)
  42.  
  43.  
  44. def monitor(frame, event, arg):
  45. print "line: {}".format(str(frame.f_lineno))
  46. print python_string_as_dictionary[frame.f_lineno-1].strip()
  47. if event == "line" :
  48. return monitor
  49.  
  50. python_string = """
  51. result_one = len([1,2,3])
  52. print result_one
  53. result_two = range(result_one)
  54. print result_two
  55. result_three = max(result_two)
  56. print "done"
  57. """
  58. with SetTrace(monitor):
  59. exec(python_string)
  60.  
  61. import subprocess as subp
  62.  
  63. python_string = """
  64. result_one = len([1,2,3])
  65. print result_one
  66. result_two = range(result_one)
  67. print result_two
  68. result_three = max(result_two)
  69. print result_three
  70. print "done"
  71. """
  72.  
  73. proc = subp.Popen(['python', '-'], stdin=subp.PIPE,
  74. stdout=subp.PIPE, stderr=subp.STDOUT)
  75. proc.stdin.write(python_string)
  76. proc.stdin.close()
  77. for line in proc.stdout:
  78. print 'out: {}'.format(line.strip())
  79. proc.wait()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement