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上的套接字)。