我可以捕获命令行执行的输出,例如
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
答案 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提供绝对路径