我想使用python编写一个简单的批处理脚本,使用os.system。我能够正常运行命令,但是这些命令的输出不会打印到python shell中。有没有办法将输出重定向到python shell中?
我想使用python编写一个简单的批处理脚本,使用os.system。我能够正常运行命令,但是这些命令的输出不会打印到python shell中。有没有办法将输出重定向到python shell中?
subprocess
。from subprocess import Popen, PIPE
p1 = Popen(['ls'], stdout=PIPE)
print p1.communicate()[0]
print Popen([command], stdout=PIPE).communicate()[0]
将 command
的输出打印到控制台。
您应该在这里阅读更多信息。您可以使用 Popen
和 PIPE
进行更多操作。
(根据要求重新发布答案):
os.system()
在终端运行时可以正常工作-这是标准输出的位置,启动的任何进程都将继承该标准输出,除非您重定向它。
如果你需要重定向到IDLE,请使用@root45上面提供的答案(已经获得赞同)。这对大多数程序有效,但至少在类Unix系统上,进程也可以直接访问它们运行的终端(例如请求密码)-Windows可能有类似的功能。
subprocess
模块代替os.system
,它具有更好的功能(如重定向输出)。 - NullUserException