Как запустить AppleScript из скрипта Python?
Как запустить AppleScript из скрипта Python?
вопросы говорят все.. (На Mac, очевидно)
3 ответов
это хорошая статья предлагает простое решение
cmd = """osascript -e 'tell app "Finder" to sleep'"""
def stupidtrick():
os.system(cmd)
хотя сегодня вы бы использовать subprocess
модуль вместо os.system
, конечно.
обязательно проверьте Страница 2 статьи для получения дополнительной информации и опций, в том числе appscript.
A subprocess
версия, которая позволяет запускать оригинальный сценарий apple как есть, без необходимости избегать кавычек и других символов, которые могут быть сложными. Это упрощенная версия найденного скрипта здесь который также выполняет параметризацию и правильное экранирование (Python 2.икс.)
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()
закроет входные и выходные потоки.
Я получил выходных людей... Вот оно:
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]