在proc.stdout.read()中的n个字节或行之后停止python子进程

在proc.stdout.read()中的n个字节或行之后停止python子进程,python,subprocess,Python,Subprocess,我想在python中运行一个子进程,直到该子进程输出了一定数量的字节或行。在这一点之后,我想终止它。子流程是否可以这样做 以下是我目前掌握的情况: proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) #kill after reaching n bytes of output, proc.terminate() out, er

我想在python中运行一个子进程,直到该子进程输出了一定数量的字节或行。在这一点之后,我想终止它。子流程是否可以这样做

以下是我目前掌握的情况:

proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
#kill after reaching n bytes of output, proc.terminate()
out, errors = proc.communicate()

谢谢

一种相当简单的方法是将输出重定向到一个程序,该程序将为您进行字节/行计数,例如:

proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
head = subprocess.Popen(['head', '-n', '20'], stdin=proc.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
proc.stdout.close()
out, errors = head.communicate()
我不确定这个方法的可移植性如何,我只能在Linux上测试,但是在Windows上,您应该能够使用more命令来实现类似的行为


关闭proc.stdout是必要的,这样当磁头退出时,proc会收到SIGPIPE。

行更容易,某些字节您可以尝试使用pexcept