我想在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()
谢谢!
答案 0 :(得分:0)
执行此操作的一种相当简单的方法是将输出重定向到将为您执行字节/行计数的程序,例如:
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
会在head
退出时收到SIGPIPE。