Python:如何将os.system的输出重定向到Python shell?

Python:如何将os.system的输出重定向到Python shell?,python,Python,我想使用python和os.system制作一个简单的批处理脚本。我能够很好地运行这些命令,但是这些命令的输出不会打印到python shell中。是否有办法将输出重定向到python shell?您可以使用 这将打印当前目录的目录列表。communicate()方法返回一个元组(stdoutdata,stderdata)。如果在Popen调用中没有包含stdout=PIPE或stderr=PIPE,您只会返回None。(因此在上面,p1.communicate[1]是None) 一句话, pr

我想使用python和os.system制作一个简单的批处理脚本。我能够很好地运行这些命令,但是这些命令的输出不会打印到python shell中。是否有办法将输出重定向到python shell?

您可以使用

这将打印当前目录的目录列表。
communicate()
方法返回一个元组
(stdoutdata,stderdata)
。如果在
Popen
调用中没有包含
stdout=PIPE
stderr=PIPE
,您只会返回
None
。(因此在上面,
p1.communicate[1]
None

一句话,

print Popen([command], stdout=PIPE).communicate()[0]
命令的输出打印到控制台

您应该阅读更多您可以使用
Popen
PIPE

进行更多操作(根据要求重新发布答案):

os.system()
在终端中运行时会工作-这就是stdout要去的地方,您启动的任何进程都将继承该stdout,除非您重定向它


如果需要重定向到IDLE,请使用上面@root45的答案(向上投票)。这将适用于大多数程序,但至少在Unixy系统上,进程也可以直接访问运行它们的终端(例如请求密码)-Windows可能有类似的功能。

您能显示一些代码吗?很难说你想做什么。你可以试着用这个模块来代替操作系统。系统
,它有更好的功能(比如重定向输出)。是的,很多人都提出了这个建议,但我似乎无法让它工作。你知道一个很好的循序渐进的例子吗?我对Python非常陌生,我发现的大多数示例都假设您知道自己在做什么。您所说的“Python外壳”是指空闲吗?如果你在终端上运行它,我认为它应该能工作。@ThomasK你说得完全正确。即使使用os.system(),如果从终端运行python,它也会正确打印。把它写进答案,我会接受的。谢谢。我在空闲状态下测试我的程序,这就是我遇到问题的原因,但无论如何,该程序都应该在unix shell中运行。当我在shell中运行它时,我看到输出很好。
print Popen([command], stdout=PIPE).communicate()[0]