2015-04-26 10 views
1

Я использую терминал, чтобы нормально открыть файл в QuickTime 7, но не может заставить его работать, используя python, чтобы сделать то же самое. Так это работает от терминала:python - открыть файл в приложении

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

Но это не работает в Python 2.7, он открывает Quicktime, но не файл:

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

Что я делаю неправильно?

ответ

1

Если вы передаете command как list/tuple, вы должны правильно разделить аргументы вверх:

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

Тогда я думаю, вы также должны быть в состоянии отказаться от параметра shell=True. Кроме того, вы можете посмотреть в subprocess.call() или subprocess.check_call() (бывший возвращает значение возврата программы, последняя вызывает исключение, если возвращаемое значение указывает на ошибку):

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

NB: Coding-стиль-мудрый, command обычно передается как список, как показано в документах, которые я связал выше.

Редактировать: Добавить '/' в начале обоих путей, чтобы заставить его работать.

+0

первое предложение ничего не делает, просто запускает палочку, ничего не происходит, subprocess.check_call дает возвращаемый ненулевой статус выхода 1. – speedyrazor

+0

В какой операционной системе вы работаете? –

+0

Теперь работает subprocess.check_call, мне пришлось добавить/в начало пути к файлу. – speedyrazor

Смежные вопросы