py-appscript ожидает аргументы

#python #arguments #vlc #sourceforge-appscript

#python #аргументы #vlc #sourceforge-appscript

Вопрос:

Я хочу создать скрипт на Python для управления VLC. VLC можно управлять с помощью AppleScript, и с помощью py-appscript I можно запускать код AppleScript из Python.

Используя AppleScript, я могу воспроизводить / приостанавливать VLC с помощью

 tell application "VLC" to play
  

Это равно следующему в py-appscript

 app('VLC').play()
  

Я также должен иметь возможность перейти к следующему треку с помощью:

 app('VLC').next()
  

Но при этом я получаю следующую ошибку Python:

 Traceback (most recent call last):
  File "vlclib.py", line 25, in <module>
    app('VLC').next()
TypeError: next() takes exactly 2 arguments (1 given)
  

Кто-нибудь знает, почему я получаю эту ошибку? Приведенный выше код должен соответствовать следующему в AppleScript, который работает отлично:

 tell application "VLC" to next
  

Комментарии:

1. Не могли бы вы опубликовать результат выполнения help(app('VLC').next) в строке 24 в своем скрипте?

2. Это дает мне следующее. Help on method next in module appscript.reference: next(self, klass) method of appscript.reference.Application instance Это как если бы он думал next() , что существует в py-appscript , но next() должен вызывать VLC через AppleScript.

Ответ №1:

Из документации appscript:

К именам, которые соответствуют ключевым словам Python или именам, зарезервированным appscript, добавляется символ подчеркивания.

Поскольку next это зарезервированное ключевое слово, вы можете исправить это, выполнив

 app('VLC').next_()
  

Комментарии:

1. Ах, конечно! Наверное, я не думал о next том, чтобы быть ключевым словом, но, конечно, это так. На самом деле, это app('VLC').next_()

2. Durr … :). Я обновил ответ, чтобы он соответствовал документации. Спасибо!