Как я встраиваю AppleScript в сценарий Python?

Я пытаюсь встроить 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()
11
задан dbmikus 6 July 2018 в 14:50
поделиться

3 ответа

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)
22
ответ дан 3 December 2019 в 02:30
поделиться

Вместо того, чтобы встраивать AppleScript, я бы использовал appscript . Я никогда не использовал версию Python, но в Ruby она была очень хороша. И убедитесь, что если вы устанавливаете его на Snow Leopard, у вас установлена ​​последняя версия XCode. Однако мне пока не удалось установить его на Snow Leopard. Но у меня Snow Leopard был только ~ 1 день, так что ваш пробег может отличаться.

1
ответ дан 3 December 2019 в 02:30
поделиться

Пример 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 ;-).

5
ответ дан 3 December 2019 в 02:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: