Получение нескольких свойств одновременно в Appscript - PullRequest
1 голос
/ 13 октября 2009

Я использую Appscript - интерфейс Python для AppleScript - в моем проекте, который в основном получает данные из приложения Mac .

Вот пример кода:

    asobj = app('Things').to_dos()[0]
    self.id = asobj.id()
    self.name = asobj.name()
    self.status = asobj.status()

Каждый вызов свойств (id, name, status) выполняет межпроцессный вызов, и, следовательно, он медленный ... особенно если вы делаете то же самое для тысяч объектов.

Есть ли способ получить несколько свойств одновременно через интерфейс Python AppleScript (appscript)?

Ответы [ 2 ]

3 голосов
/ 13 октября 2009

Я не уверен на 100%, как это будет выражено в Python, но большинство объектов Applescript поддерживают свойство «properties», которое будет возвращать словарь, содержащий пары ключ / значение для каждого из поддерживаемых свойств этого объекта. Я предполагаю, что вызов asobj.properties() вернет соответствующую структуру данных, из которой вы затем сможете получить любые индивидуальные свойства, которые вы хотите.

0 голосов
/ 14 октября 2009

Если у вас есть большое количество элементов, ваши свойства будут быстрее схвачены так:

ref = app('Things').to_dos
ids = ref.id()
names = ref.name()
statuses = ref.status()

, а затем используйте функцию Python zip (), чтобы изменить их при необходимости. В документации по appScript есть глава о методах оптимизации, которая объясняет это более подробно.

Вам также следует получить копии инструментов ASDictionary и ASTranslate с веб-сайта appscript, если вы этого еще не сделали. ASTranslate поможет вам преобразовать команды приложения из AppleScript в синтаксис приложения. ASDictionary будет экспортировать словари приложений в формате appscript, а также включает встроенный метод appscript help (), который позволяет интерактивно исследовать словари приложений (гораздо более мощный, чем dir ()).

...