1

我在我的一个项目中使用Appscript(AppleScript 的 Python 接口),该项目基本上从Mac 应用程序获取数据。

这是一个示例代码:

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

每次调用属性(id、name、status)都会进行进程间调用,因此速度很慢……尤其是当您对数千个对象执行相同操作时。

有没有办法通过 AppleScript 的 Python 接口(appscript)同时获取多个属性?

4

2 回答 2

3

我不是 100% 确定这将如何在 Python 中表达,但大多数 Applescript 对象都支持“属性”属性,该属性将返回一个字典,其中包含该对象的每个受支持属性的键/值对。我猜调用asobj.properties()会返回一个适当的数据结构,然后您可以从中检索您想要的任何单个属性。

于 2009-10-13T03:16:28.783 回答
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() 强大得多)。

于 2009-10-14T11:35:29.667 回答