在Python中捕获控制台输出
我可以捕捉命令行执行的输出,比如说:
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 个回答
1
注意,在你的第二个命令中,你有多个参数(-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 变量中提供 vlc.exe 和你的 XYZ.avi 的绝对路径。
1
我觉得这主要是VLC界面的问题。可能有一些选项可以让vlc.exe在运行时不在新窗口中打开控制台,或者以其他方式提供输出。总的来说,没有什么能阻止我运行一个进程,这个进程又去运行另一个进程,并且不把输出结果提供给我的进程。