使用自定义输入和输出的Python 3子进程

问题描述 投票:0回答:1

我做了2个班级:实现Input方法的read,以及实现Output方法的write

我正在尝试调用shell命令并捕获输入和输出。这是我的代码:

import subprocess
command = "date"
output = Output()
input = Input()
process = subprocess.Popen(command,
                           stdout=output, stdin=input, shell=False)

但是当我检查输出实例时,它说它不包含任何数据。

python-3.x subprocess stdout
1个回答
0
投票

从技术上讲,这些类实例可能是无效的参数,除非它们从文件对象继承。

根据documentation(强调我:)>

stdin,stdout和stderr分别指定执行程序的标准输入,标准输出和标准错误文件句柄。 有效值为PIPE,DEVNULL,现有文件描述符(正整数),现有文件对象和无]。 PIPE指示应创​​建到子级的新管道。 DEVNULL表示将使用特殊文件os.devnull。使用默认设置无,将不会发生重定向。子文件的句柄将从父文件继承。另外,stderr可以是STDOUT,这表示应将来自应用程序的stderr数据捕获到与stdout相同的文件句柄中。

© www.soinside.com 2019 - 2024. All rights reserved.