2015-04-26 5 views
1

J'utilise un terminal pour ouvrir avec succès un fichier dans quicktime player 7, mais je n'arrive pas à le faire fonctionner en utilisant python pour faire la même chose. Donc, ce travaille depuis le terminal:python - ouvrir le fichier dans l'application

open -a "Quicktime Player 7" /Users/Me/Movies/test.mov 

Mais cela ne fonctionne pas en python 2.7, il ouvre quicktime, mais pas le fichier:

command = ('open -a "Quicktime Player 7"', 'Users/Me/Movies/test.mov') 
subprocess.Popen(command, shell=True) 

Qu'est-ce que je fais mal?

Répondre

1

Si vous passez command comme list/tuple, vous devez diviser les arguments correctement:

command = ('open', '-a', 'Quicktime Player 7', '/Users/Me/Movies/test.mov') 
subprocess.Popen(command, shell=True) 

Je pense que vous devriez aussi être en mesure de déposer le paramètre shell=True. De plus, vous pouvez regarder dans subprocess.call() ou subprocess.check_call() (les anciens renvoie la valeur de retour du programme, celui-ci déclenche une exception si la valeur de retour indique une erreur):

subprocess.check_call(['open', '-a', 'Quicktime Player 7', '/Users/Me/Movies/test.mov']) 

NB: codage style sage, command est généralement passé en liste, comme on le voit dans les documents que j'ai liés ci-dessus.

Modifier: Ajoutez '/' au début des deux chemins pour le faire fonctionner.

+0

la première suggestion ne fait rien, il n'y a rien qui se passe, le sous-processus.check_call donne l'état de sortie non nul retourné 1. – speedyrazor

+0

Quel système d'exploitation utilisez-vous? –

+0

subprocess.check_call fonctionne maintenant, j'ai dû ajouter un/au début du chemin du fichier. – speedyrazor