Я пытаюсь встроить AppleScript в сценарий Python. Я не хочу должным быть сохранять AppleScript как файл и затем загружать его в моем сценарии Python. Существует ли способ ввести AppleScript, поскольку строка в Python и иметь Python выполняет AppleScript? Огромное спасибо.
Вот мой сценарий: импортируйте импорт ре импорта подпроцесса OS
def get_window_title():
cmd = """osascript<<END
tell application "System Events"
set frontApp to name of first application process whose frontmost is true
end tell
tell application frontApp
if the (count of windows) is not 0 then
set window_name to name of front window
end if
end tell
return window_name
END"""
p = subprocess.Popen(cmd, shell=True)
p.terminate()
return p
def get_class_name(input_str):
re_expression = re.compile(r"(\w+)\.java")
full_match = re_expression.search(input_str)
class_name = full_match.group(1)
return class_name
print get_window_title()
Use subprocess:
from subprocess import Popen, PIPE
scpt = '''
on run {x, y}
return x + y
end run'''
args = ['2', '2']
p = Popen(['osascript', '-'] + args, stdin=PIPE, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate(scpt)
print (p.returncode, stdout, stderr)
Вместо того, чтобы встраивать AppleScript, я бы использовал appscript . Я никогда не использовал версию Python, но в Ruby она была очень хороша. И убедитесь, что если вы устанавливаете его на Snow Leopard, у вас установлена последняя версия XCode. Однако мне пока не удалось установить его на Snow Leopard. Но у меня Snow Leopard был только ~ 1 день, так что ваш пробег может отличаться.
Пример 3 в эта статья предлагает:
#!/usr/bin/env python
#sleepy-mac.py
#makes my mac very sleepy
import os
cmd = """osascript -e 'tell app "Finder" to sleep'"""
def stupidtrick():
os.system(cmd)
stupidtrick()
В наши дни, однако, подсистема.Popen
обычно предпочтительнее, чем os.system
(статья написана три года назад, когда никто не кричал, увидев звонок os.system
;-).