Python 进程管道输入

2018-12-03  本文已影响0人  家中古词

在 Python 中执行一个可执行程序,并且将一个 Python 字符串作为子进程的输入。

def Run(prog, inputs):
    proc = subprocess.Popen([prog],
            stdin=subprocess.PIPE,
            stdout=subprocess.PIPE)

    proc.stdin.write(bytes(inputs, 'utf-8'))
    proc.stdin.close()

    for line in proc.stdout:
        sys.stdout.write(line.decode())
    proc.stdout.close()

使用 stdin=subprocess.PIPE,就可以将 proc.stdin 当作一个文件类型来写。但因为 Popen 开始时,程序就会开始执行,如果你这之后代码没有写对,错误信息可能被要运行的进程的输出给刷屏。所以这种场景下,一般会选择将子进程的输出捕获,变成父进程的输出。

上一篇 下一篇

猜你喜欢

热点阅读