使用oskystem的taskkill无法杀死VLC.exe

时间:2017-01-25 21:55:35

标签: python cmd vlc os.system taskkill

我这里有一个非常奇怪和令人困惑的问题。我试图使用VLC Media Player自动打开和关闭.wmv文件。我最初用来打开文件的代码效果很好:

# set directory    
os.chdir("Path/to/folder/containing/wmvfiles")    
# start the given file name
os.startfile("ExampleFileName.wmv")

然后,当我准备好完成播放时,我会使用以下代码关闭此视频

os.system("taskkill /im vlc.exe") 

这很棒!但是......我需要它打开全屏。 Sooo,我用这个替换了我的初始代码来启动视频:

 os.system
 ('""C:\Program Files\VideoLAN\VLC\\vlc.exe" -f "c:\videoFiles\\videoName.wmv""')

这很棒!它全屏打开,一切都很好。但是..... taskkill没有关闭这个过程。为了尽可能具体,此代码不会关闭它,VLC程序将保持打开状态:

# open the file in full screen    
os.system
 ('""C:\Program Files\VideoLAN\VLC\\vlc.exe" -f "c:\videoFiles\\videoName.wmv""')
# close the file
os.system("taskkill /im vlc.exe")
很奇怪吧?情况变得更糟。当我以这种方式打开文件时:

os.system
 ('""C:\Program Files\VideoLAN\VLC\\vlc.exe" -f "c:\videoFiles\\videoName.wmv")

然后我转到命令提示符并输入

taskkill /im vlc.exe

关闭。我完全不知道为什么会这样:

os.system("taskkill /im vlc.exe")

仅当我以第一种方式(os.startfile)启动文件时以及直接从命令提示符运行命令时才有效。这可能是一个令人困惑的问题,但这是一个非常令人困惑的问题,任何帮助或意见将非常感谢,谢谢!

2 个答案:

答案 0 :(得分:1)

不确定。但是,我不会使用os,我会使用subprocess

类似的东西:

import shlex, subprocess
p = subprocess.Popen(shlex.split("cmd of some sort"))
#
# More code
#
p.terminate()

答案 1 :(得分:1)

  

更新: :使用vlc时,您可以使用其参数/命令,在播放视频后通过 vlc://quit自行退出vlc。 :    

import subprocess
vlc_path =r'C:\\Program Files (x86)\\VideoLAN\\VLC\\vlc.exe'
open_mp4 =r'C:\\video\\Lean On Me _ Playing For Change.mp4'
vlc_full =r'-f'
vlc_quit =r'vlc://quit'
subprocess.call([vlc_path]+[open_wmv]+[vlc_full]+[vlc_quit])

因此,如果您需要使用taskkill,可以通过添加 /f = force并添加 import os 来更改命令:

import os
os.system('taskkill /f /im vlc.exe')
  

或者,要杀死vlc.exe创建的任何子进程,请添加/t

os.system('taskkill /f /im vlc.exe /t')