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

时间:2011-11-15 17:45:55

标签: python

我想使用os.system使用python创建一个简单的批处理脚本。我能够正常运行命令,但这些命令的输出不打印到python shell。有没有办法将输出重定向到python shell?

2 个答案:

答案 0 :(得分:7)

您可以使用subprocess

from subprocess import Popen, PIPE
p1 = Popen(['ls'], stdout=PIPE)
print p1.communicate()[0]

这将打印当前目录的目录列表。 communicate()方法返回元组(stdoutdata, stderrdata)。如果您在stdout=PIPE来电中未加入stderr=PIPEPopen,那么您只需返回None。 (所以在上面,p1.communicate[1]None。)

在一行中,

print Popen([command], stdout=PIPE).communicate()[0]

command的输出打印到控制台。

您应该阅读更多here.您可以使用PopenPIPE完成更多工作。

答案 1 :(得分:2)

(根据要求重新作为答案):

os.system()在终端中运行时会起作用 - 这就是stdout的去向,除非你重定向它,否则你启动的任何进程都将继承该stdout。

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