我正在使用Appscript - AppleScript的Python界面 - 在我的一个项目中,基本上从a Mac application获取数据。
以下是示例代码:
asobj = app('Things').to_dos()[0]
self.id = asobj.id()
self.name = asobj.name()
self.status = asobj.status()
每次调用属性(id,name,status)都会进行进程间调用,因此速度很慢..尤其是对数千个对象执行相同操作时。
有没有办法通过AppleScript的Python界面(appscript)同时获取多个属性?
答案 0 :(得分:3)
我不是100%确定如何在Python中表达它,但是大多数Applescript对象都支持“properties”属性,该属性将返回包含该对象的每个受支持属性的键/值对的字典。我猜测调用asobj.properties()
将返回一个合适的数据结构,然后您可以从中检索所需的任何单个属性。
答案 1 :(得分:0)
如果您拥有大量元素,那么抓住您的属性会更快:
ref = app('Things').to_dos
ids = ref.id()
names = ref.name()
statuses = ref.status()
然后使用Python的zip()函数根据需要重新排列它们。 appscript文档有一章关于优化技术,可以更详细地解释这一点。
如果您还没有这样做,您还应该从appscript网站获取ASDictionary和ASTranslate工具的副本。 ASTranslate将帮助您将应用程序命令从AppleScript转换为appscript语法。 ASDictionary将以appscript样式格式导出应用程序字典,并启用appscript的内置help()方法,允许您以交互方式探索应用程序字典(比dir()强大得多)。