вы можете читать построчно, используя subprocess.Popen
и считать строки (перенаправление и объединение выходных данных и потоков ошибок, возможно, объединение не требуется, зависит от процесса)
- Если числоколичество строк превышает 20, завершите процесс и прервите цикл.
- Если цикл заканчивается до того, как число строк достигнет 20, выведите / обработайте ошибку
код:
p = subprocess.Popen(cmd,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
for lineno,line in enumerate(iter(p.stdout.readline, b'')):
if lineno == 20:
print("process okay")
p.kill()
break
else:
# too short, break wasn't reached
print("process failed return code: {}".format(p.wait()))
обратите внимание, что p.poll() is not None
может помочь выяснить, преждевременно ли закончился процесс