在Python中捕获控制台输出

时间:2014-06-25 10:00:25

标签: python subprocess stdout

我可以捕获命令行执行的输出,例如

import subprocess
cmd = ['ipconfig']
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
output = proc.communicate()[0]
print output

在上面的示例中,很简单,因为ipconfig在命令行上直接运行时会在同一控制台窗口上打印输出。但是,可能存在命令打开新控制台窗口以显示所有输出的情况。例如,从命令行运行VLC.exe。以下VLC命令将打开一个新的控制台窗口以显示消息:

vlc.exe -I rc XYZ.avi

我想知道如何在Python中捕获第二个控制台窗口上显示的输出。上面的ipconfig示例在这种情况下不起作用。

此致

SS

2 个答案:

答案 0 :(得分:1)

我认为这真的是VLC界面的问题。 vlc.exe可能有一些选项,因此它不会在新窗口中启动控制台或以其他方式提供输出。一般来说,没有任何东西阻止我运行一个运行另一个进程的进程,并且不向我的进程的调用者提供它的输出。

答案 1 :(得分:0)

请注意,在第二个命令中,您有多个参数(-I,rc和文件名 - XYZ.avi),在这种情况下,您的cmd变量应该是您要运行的命令列表,后跟该命令的所有参数:

试试这个:

import subprocess
cmd=['vlc.exe',  '-I', 'rc', 'XYZ.avi']
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
output = proc.communicate()[0]
print output

如果您没有从右侧目录运行脚本,则可能需要为cmd var中的vlc.exe和XYZ.avi提供绝对路径