python-3.x - 使用自定义输入和输出的 Python 3 子进程
问题描述
我做了2个类:
Input
哪个实现read
方法,
Output
哪个实现write
方法
我正在尝试调用 shell 命令并捕获输入和输出。这是我的代码:
import subprocess
command = "date"
output = Output()
input = Input()
process = subprocess.Popen(command,
stdout=output, stdin=input, shell=False)
但是当我检查输出实例时,它说它不包含数据。
解决方案
从技术上讲,这些类实例可能是无效参数,除非它们继承自文件对象。
根据文档(强调我的):
stdin、stdout 和 stderr 分别指定执行程序的标准输入、标准输出和标准错误文件句柄。有效值为 PIPE、DEVNULL、现有文件描述符(正整数)、现有文件对象和 None。PIPE 表示应该创建一个通往子级的新管道。DEVNULL 表示将使用特殊文件 os.devnull。默认设置为None,不会发生重定向;子文件句柄将从父文件继承。此外,stderr 可以是 STDOUT,这表明来自应用程序的 stderr 数据应该被捕获到与 stdout 相同的文件句柄中。
推荐阅读
- if-statement - 如何使用 IF 条件设置公式?
- r - 如何在该函数的装饰器中访问函数的参数?
- angular - 使用管理员帐户登录时,isAdmin 从 Firebase 实时数据库中消失
- php - php warning when trying to set a bit in a string/chr
- c++ - 程序在 Visual Studio 调试器中运行。可执行文件无法正常运行
- java - 如何在java中捕获两个非法异常
- python - 以新格式填充新的 Pandas DataFrame - 查找
- java - 尝试识别正在按下哪个按钮时出错
- node.js - 如何在 Docker 容器中执行 redbird?
- python - 在类内的多边形内创建随机点