2017-01-25 16 views
1

У меня очень странная и запутанная проблема. Я пытаюсь автоматизировать открытие и закрытие файлов .wmv с помощью VLC Media Player. Код, который я использовал в первом, чтобы открыть файл, отлично работает:Невозможно убить VLC.exe с помощью taskkill с os.system

# 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") 

Weird да? Это становится еще хуже. При открытии файла таким образом:

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), и когда я запускаю команду непосредственно из командной строки. Это может быть запутанный вопрос, но это очень запутанная проблема, любая помощь или ввод будет очень оценена, спасибо!

+0

возможно только ошибки копирования и вставок, но цитата выглядит странно: открытие одного кавычки без соответствующего закрывающих одну, а затем две двойных кавычек, ... Пожалуйста, что вы отправляете код, который вы пробовали, или это уже ошибка? Кроме того, в вашей второй строке 'os.system (« taskkill/im vlc.exe ») отсутствует закрывающая скобка. – maij

+0

@maji исправил это, я просто сделал опечатки при написании этого сообщения. – mattp341

+0

Вы уверены, что vlc действительно работает, когда вы пытаетесь решить задачу? – maij

ответ

0

Не уверен. Однако я бы не использовал os, я бы использовал subprocess.

Что-то вроде:

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

Это заставляет меня задаться вопросом, могу ли я просто закончить начатый процесс, который мог бы работать. – mattp341

+0

Модуль 'subprocess' был создан для замены использования' os.system'. Вы найдете больше flex с ним. – RobertB