Gornak40

Engine

Nov 24th, 2020 (edited)
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.68 KB | None | 0 0
  1. class Engine:
  2.     def __init__(self, path):
  3.         self.path = path
  4.         self.eng = Popen(path, universal_newlines=True, stdin=PIPE, stdout=PIPE)
  5.  
  6.     def __del__(self):
  7.         self.eng.kill()
  8.  
  9.     def write(self, com):
  10.         if not self.eng.stdin:
  11.             raise BrokenPipeError
  12.         self.eng.stdin.write(f'{com}\n')
  13.         self.eng.stdin.flush()
  14.  
  15.     def readline(self):
  16.         if not self.eng.stdout:
  17.             raise BrokenPipeError
  18.         return self.eng.stdout.readline().strip()
  19.  
  20.     def isready(self):
  21.         self.write('isready')
  22.         while True:
  23.             if self.readline() == 'readyok':
  24.                 return
  25.  
  26.     def readfor(self, func):
  27.         res = list()
  28.         while True:
  29.             text = self.readline()
  30.             res.append(text)
  31.             if func(text):
  32.                 return res
Add Comment
Please, Sign In to add comment