不使用osascript或appscript从Python调用AppleScript?

gim*_*and 13 python macos applescript

有没有办法从python执行(并获得)AppleScript代码的结果而不使用osascript命令行实用程序或appscript(我不想使用它(我认为?)因为它不再开发/支持/推荐)?

理由:在我刚刚发布的另一个问题中,我描述了一个奇怪/不受欢迎的行为,我正在通过运行AppleScript来体验osascript.因为我实际上是从python脚本调用它,我想知道是否有办法osascript完全绕行,因为这似乎是问题所在 - 但是appscript(显而易见的选择?)现在看起来有风险......

Ken*_*ses 21

您可以使用PyObjC桥:

>>> from Foundation import *
>>> s = NSAppleScript.alloc().initWithSource_("tell app \"Finder\" to activate")
>>> s.executeAndReturnError_(None)
Run Code Online (Sandbox Code Playgroud)


foo*_*foo 20

PyPI是你的朋友......

http://pypi.python.org/pypi/py-applescript

例:

import applescript

scpt = applescript.AppleScript('''
    on run {arg1, arg2}
        say arg1 & " " & arg2
    end run

    on foo()
        return "bar"
    end foo

    on Baz(x, y)
        return x * y
    end bar
''')

print(scpt.run('Hello', 'World')) #-> None
print(scpt.call('foo')) #-> "bar"
print(scpt.call('Baz', 3, 5)) #-> 15
Run Code Online (Sandbox Code Playgroud)

  • 注意:py-applescript依赖于PyObjC的OSAscript功能 (2认同)