如何在Python脚本中运行AppleScript?
问题说明了一切...... (显然在Mac上)
答案 0 :(得分:11)
this nice article建议使用简单的解决方案
cmd = """osascript -e 'tell app "Finder" to sleep'"""
def stupidtrick():
os.system(cmd)
虽然今天您使用的是subprocess
模块,而不是os.system
。
答案 1 :(得分:5)
允许运行原始苹果脚本的subprocess
版本,无需转义引号和其他可能棘手的字符。它是找到here脚本的简化版本,它也可以进行参数化和正确转义(Python 2.x)。
import subprocess
script = '''tell application "System Events"
activate
display dialog "Hello Cocoa!" with title "Sample Cocoa Dialog" default button 2
end tell
'''
proc = subprocess.Popen(['osascript', '-'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
stdout_output = proc.communicate(script)[0]
print stdout_output
注意:如果您需要使用相同的Popen实例执行多个脚本,那么您需要使用
proc.stdin.write(script)
明确写入并使用proc.stdout.read()
阅读,因为communicate()
将关闭输入和输出流。
答案 2 :(得分:0)
我得到了输出人员......以下是:
import subprocess
import sys
for i in range(int(sys.argv[1])):
ip = str(sys.argv[2])
username = str(sys.argv[3])
pwd = str(sys.argv[4])
script = '''tell application "Terminal"
activate
do script with command "cd Desktop && python test_switch.py {ip} {username} {pwd}"
delay 15
end tell
'''
proc = subprocess.Popen(['osascript', '-'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
stdout_output = proc.communicate(script.format(ip=ip, username=username, pwd=pwd))[0]
答案 3 :(得分:0)
我非常沮丧,因为苹果自己的文档中缺乏有关如何执行此操作以及传递参数的详细信息。我必须以字符串形式发送所需的arg(在本例中为zoom id),否则参数未传递到applescript应用
这是我从python运行的代码:
f = script if os.path.exists(script) else _tempfile()
if not os.path.exists(script):
open(f,'w').write(script)
args = ["osascript", f, str(zoom_id)]
kwargs = {'stdout':open(os.devnull, 'wb'),'stderr':open(os.devnull, 'wb')}
#kwargs.update(params)
proc = subprocess.Popen(args,**kwargs)
这是我的applescript:
on run argv
set zoom_id to 0
zoom_id = item 1 in argv
tell application "zoom.us"
--do stuff
end tell
end run