subprocess.check_output
и os.popen
и subprocess.Popen
.from io import StringIO
import sys
class OutputInterceptor(list):
def __enter__(self):
self._stdout = sys.stdout
sys.stdout = self._stringio = StringIO()
return self
def __exit__(self, *args):
self.extend(self._stringio.getvalue().splitlines())
del self._stringio
sys.stdout = self._stdout
with OutputInterceptor() as output:
# Любой вывод в консоль из этого блока будет сохраняться в переменную output
print("123")
print('\n'.join(output))