我做了2个班级:实现Input
方法的read
,以及实现Output
方法的write
我正在尝试调用shell命令并捕获输入和输出。这是我的代码:
import subprocess
command = "date"
output = Output()
input = Input()
process = subprocess.Popen(command,
stdout=output, stdin=input, shell=False)
但是当我检查输出实例时,它说它不包含任何数据。
从技术上讲,这些类实例可能是无效的参数,除非它们从文件对象继承。
根据documentation(强调我:)>
stdin,stdout和stderr分别指定执行程序的标准输入,标准输出和标准错误文件句柄。 有效值为PIPE,DEVNULL,现有文件描述符(正整数),现有文件对象和无]。 PIPE指示应创建到子级的新管道。 DEVNULL表示将使用特殊文件os.devnull。使用默认设置无,将不会发生重定向。子文件的句柄将从父文件继承。另外,stderr可以是STDOUT,这表示应将来自应用程序的stderr数据捕获到与stdout相同的文件句柄中。