Popen子进程.PIPE及其用途

我知道这个问题可能已经被问了很多,但我还没有真正得到它。 从这个相关的链接中读取,我可以理解为什么需要在句子末尾添加stdout=subprocess.PIPE ,以便输出结果可以用于下一个Popen。

尝试在网上寻找,但我几乎没有获得关于它的知识,因为我发现它们是以文档的形式出现的。

但是如果我不使用输出,是否真的有必要把stdout=subprocess.PIPE放在最后? 我试着用它来执行它,但它仍然给我预期的结果。

因此,不论subprocess.PIPE是否存在,最大的区别是什么?

process = subprocess.Popen(command, stdout=subprocess.PIPE)
process.communicate()

没有subprocess.PIPE命令的输出将被打印在STDOUT上,process.communicate()应该返回None。 你正在使用哪个Python版本?

你能粘贴输出吗?


如果你不读/写相应的管道,那么你应该使用subprocess.PIPE 。 如果相应的OS管道缓冲区已满,它可能会停止子进程。

使用subprocess.PIPE如果你想获得子进程的输出(或通过输入)作为字符串(变量)或只需调用subprocess.check_output()即会为你的内部。

如果要将process.stdout作为标准输入传递到另一个进程(以模拟a | b shell命令),请使用subprocess.PIPE

如果你想忽略输出; 你可以将它重定向到DEVNULL。 你可以将它重定向到一个文件(或任何有效的.fileno()例如Unix上的套接字)。

链接地址: http://www.djcxy.com/p/77099.html

上一篇: Popen subprocess.PIPE and its uses

下一篇: Subshell in python subprocess