Python os.devnull和SUBSPROCESS.pipe之间的差异

Python os.devnull和SUBSPROCESS.pipe之间的差异,python,shell,subprocess,Python,Shell,Subprocess,我一直在尝试如何通过将open(os.devnull,'w')和subprocess.PIPE分配给stdout值,来不打印python的subprocess.call()的shell输出: subprocess.call(command, stdout=open(os.devnull, 'w'), shell=True) 及 这两行都谨慎地执行存储在命令变量中的shell命令(在终端上没有输出)——但我不知道两者之间的区别。我不熟悉使用子流程 /ogs在linux中指向/dev/null。当

我一直在尝试如何通过将
open(os.devnull,'w')
subprocess.PIPE
分配给
stdout
值,来不打印python的
subprocess.call()的shell输出:

subprocess.call(command, stdout=open(os.devnull, 'w'), shell=True)

这两行都谨慎地执行存储在命令变量中的shell命令(在终端上没有输出)——但我不知道两者之间的区别。我不熟悉使用子流程


/ogs在linux中指向/dev/null。当您写入/dev/null时,它将丢弃接收到的所有内容。
管道有两个端点,当您写入一端时,另一个管道将接收您写入的消息。

devnull在linux中指向/dev/null。当您写入/dev/null时,它将丢弃接收到的所有内容。
管道有两个端点,当您写入一端时,另一个管道将接收您写入的消息。

第一种方法是将标准输出重定向到文件(/dev/null,在POSIX中),第二种方法是构建一个管道,将输出重定向到特定流

SUBSPROCESS.PIPE的正式定义来自命令帮助():“此模块允许您生成进程,连接到它们的输入/输出/错误管道,并获取它们的返回代码。”

我想说这个方法就像:我们只是把一些东西放在一个消息队列(内存)中一段时间,以便以后使用。但是subprocess.call只返回状态码。似乎无法引用
subprocess.call(command,stdout=open(os.devnull,'w'),shell=True)的返回值
,因此无法通过`subprocess.call(command,stdin=the_stdout,shell=True)引用该值。很难在两个命令之间建立连接

根据本文中的信息:

还有Python 2.7文档:

建议将Popen与Communication()一起使用

Popen是Python 3提供的高级类。
关于这一点有一个很好的参考资料:

第一种方法是将标准输出重定向到一个文件(/dev/null,在POSIX中),而第二种方法是构建一个管道,将输出重定向到特定的流

SUBSPROCESS.PIPE的正式定义来自命令帮助():“此模块允许您生成进程,连接到它们的输入/输出/错误管道,并获取它们的返回代码。”

我想说这个方法就像:我们只是把一些东西放在一个消息队列(内存)中一段时间,以便以后使用。但是subprocess.call只返回状态码。似乎无法引用
subprocess.call(command,stdout=open(os.devnull,'w'),shell=True)的返回值
,因此无法通过`subprocess.call(command,stdin=the_stdout,shell=True)引用该值。很难在两个命令之间建立连接

根据本文中的信息:

还有Python 2.7文档:

建议将Popen与Communication()一起使用

Popen是Python 3提供的高级类。
这方面有一个很好的资源:

您好,谢谢您的全面回答和相应的参考资料/我很高兴。你能给我的答案打一分吗?谢谢。不幸的是,我的代表仍然太低,我无法增加你的分数,但我会在我达到15个代表后立即增加分数。我还选择了你的答案作为最佳答案。不客气/ogshi,感谢您的全面回答和相应的参考资料/我很高兴。你能给我的答案打一分吗?谢谢。不幸的是,我的代表仍然太低,我无法增加你的分数,但我会在我达到15个代表后立即增加分数。我还选择了你的答案作为最佳答案。不客气/Ogswould请您添加更多详细信息,说明devnull为什么会放弃收到的所有内容。thx。请您添加更多详细信息,说明devnull为什么会放弃收到的所有内容。谢谢。
subprocess.call(command, stdout=subprocess.PIPE, shell=True)