Python子进程产生的输出或n

2024-04-25 20:18:06 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题涉及:

python, subprocess: reading output from subprocess

如果p是一个子进程,它是由一个命令启动的

import subprocess

P = subprocess.Popen ("command", stdout=subprocess.PIPE)

我们可以读出p产生的输出。标准输出读取线(). 不过,这是一个阻塞读取。如何检查是否有可供读取的输出(无阻塞)?在


Tags: fromimport命令output标准进程stdoutcommand
2条回答

如果使用的是*nix,那么可以使用select模块来轮询stdout文件描述符

import subprocess
import select
poller = select.epoll()

P = subprocess.Popen ("command", stdout=subprocess.PIPE)
poller.register(P.stdout, select.EPOLLHUP)

while True:
    #block indefinitely: timeout = -1
    #return immediately: timeout = 0
    for fd, flags in poller.poll(timeout=0)
        foo = P.stdout.readline()
    #do something else before the next poll

相关问题 更多 >