2017-01-25 2 views
1

J'ai un problème très étrange et embarrassant ici. J'essaie d'automatiser l'ouverture et la fermeture de fichiers .wmv avec VLC Media Player. Le code que d'abord utilisé pour ouvrir le fichier, fonctionne très bien:Impossible de tuer VLC.exe en utilisant taskkill avec os.system

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

alors j'utiliser le code suivant pour fermer cette vidéo quand j'étais prêt pour cela à faire jouer

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

Cette ça a bien marché! Cependant ...... j'en ai besoin pour ouvrir le plein écran. Sooo, j'ai remplacé mon code initial pour commencer la vidéo avec ceci:

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

Cela a fonctionné très bien! Il s'ouvre en plein écran et tout va bien. Cependant ... taskkill ne ferme pas le processus. Pour être aussi précis que possible, ce code ne se ferme pas, le programme VLC va simplement rester ouvert:

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

hein bizarre? Cela devient encore pire. Quand j'ouvre le fichier ainsi:

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

Puis je vais à l'invite de commande et tapez

taskkill /im vlc.exe 

Il ferme. Je ne sais absolument pas pourquoi les éléments suivants:

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

fonctionne que lorsque je commence mon dossier la première manière (os.startfile) et quand je lance la commande directement à partir de l'invite de commande. Cela peut être une question déroutante, mais c'est un problème très confus, toute aide ou contribution serait très appréciée, merci!

+0

probablement seulement une erreur de copier et coller, mais la citation semble étrange: Une guillemet simple ouverture sans une fermeture correspondante, suivi de deux guillemets doubles, ... S'il vous plaît faire Assurez-vous que vous postez le code que vous avez essayé, ou est-ce déjà l'erreur? Il manque aussi une parenthèse fermante dans votre deuxième ligne 'os.system (" taskkill/im vlc.exe ") – maij

+0

@maji corrigé cela, je viens de faire des fautes de frappe en écrivant ceci – mattp341

+0

Etes-vous sûr que vlc fonctionne vraiment quand – maij

Répondre

0

Incertain. Cependant, je n'utiliserais pas os, j'utiliserais subprocess.

Quelque chose comme:

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

Cela me fait me demander si je pouvais simplement terminer le processus que j'ai commencé, cela pourrait fonctionner – mattp341

+0

Le module 'subprocess' a été créé pour remplacer l'utilisation de' os.system'. avec elle. – RobertB