2017-04-18 19 views
1

我有一個執行兩個參數的applescript。如何從python腳本傳遞applescript參數?

on run {targetBuddyPhone, targetMessage} 
    tell application "Messages" 
     set targetService to 1st service whose service type = iMessage 
     set targetBuddy to buddy targetBuddyPhone of targetService 
     send targetMessage to targetBuddy 
    end tell 
end run 

然後我想讓這個腳本從python腳本中執行。我知道如何從python執行applescript,但我怎麼也給它參數?這是我目前寫出來的python腳本。

#!/usr/bin/env python3 
import subprocess 

def run_applescript(script, *args): 
    p = subprocess.Popen(['arch', '-i386', 'osascript', '-e', script] + 
         [unicode(arg).encode('utf8') for arg in args], 
         stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
    err = p.wait() 
    if err: 
     raise RuntimeError(err, p.stderr.read()[:-1].decode('utf8')) 
    return p.stdout.read()[:-1].decode('utf8') 

我試圖在終端執行該代碼後收到的錯誤是:

Traceback (most recent call last): 
    File "messageExecuter.py", line 14, in <module> 
    run_applescript("sendMessage.scpt",1111111111,"hello") 
    File "messageExecuter.py", line 11, in run_applescript 
    raise RuntimeError(err, p.stderr.read()[:-1].decode('utf8')) 
RuntimeError: (1, u'arch: posix_spawnp: osascript: Bad CPU type in executable') 

感謝先進的幫助!

回答

1

線索在錯誤信息中。從參數列表中刪除'arch', '-i386',因爲osascript僅爲64位。