एक पायथन स्क्रिप्ट के भीतर से AppleScript कैसे चलाएं?एक पायथन स्क्रिप्ट के भीतर से AppleScript कैसे चलाएं?
सवाल यह सब कहते हैं .. (Mac पर स्पष्ट रूप से)
एक पायथन स्क्रिप्ट के भीतर से AppleScript कैसे चलाएं?एक पायथन स्क्रिप्ट के भीतर से AppleScript कैसे चलाएं?
सवाल यह सब कहते हैं .. (Mac पर स्पष्ट रूप से)
this nice article सरल समाधान का सुझाव
cmd = """osascript -e 'tell app "Finder" to sleep'"""
def stupidtrick():
os.system(cmd)
हालांकि आज आप subprocess
मॉड्यूल बजाय os.system
की, निश्चित रूप से उपयोग करेंगे।
appscript सहित कई और जानकारी और विकल्पों के लिए आलेख के page 2 को भी जांचना सुनिश्चित करें।
ए subprocess
संस्करण जो एक मूल सेब स्क्रिप्ट को चलाने की अनुमति देता है, जैसा कि उद्धरण और अन्य पात्रों से बचने के बिना मुश्किल हो सकता है। यह here मिली स्क्रिप्ट का सरलीकृत संस्करण है जो पैरामीट्रिजेशन और उचित भागने (पायथन 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)
साथ स्पष्ट रूप से लिखने और क्योंकिcommunicate()
इनपुट और आउटपुट धाराओं बंद हो जाएगाproc.stdout.read()
साथ पढ़ने के लिए की आवश्यकता होगी।
पायथन 3 में यह काम नहीं करेगा, एक अतिरिक्त पैरामीटर universal_newlines = पॉप पर सही है। Https://stackoverflow.com/a/45133926/1534775 देखें – gbonetti
मैं आउटपुट लोगों मिला ... यहाँ यह निम्नलिखित है:
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]
आप अजगर से गैर तुच्छ एप्पल घटना पटकथा किसी भी तरह का क्या करने जा रहा है, तो आप appscript का उपयोग किया जाना चाहिए। यह अच्छी तरह से डिज़ाइन किया गया, परिपक्व और अच्छी तरह से समर्थित है। –
@Ned, निश्चित रूप से, लेकिन इस तरह के एक सरल, विशिष्ट उद्देश्य के लिए एक सरल बिट सेबस्क्रिप्ट को कॉल करने के लिए, 'osascript -e' और 'subprocess.call' की" बेवकूफ चाल ", जैसा कि लेख के पृष्ठ 1 में सुझाया गया है (ठीक है जैसा कि मैंने उल्लेख किया है लेख पुराने 'ओएस सिस्टम' का उपयोग करता है, लेकिन यह एक विवरण है ;-) पर्याप्त हो सकता है। –
ओह, एलेक्स, मैं निश्चित रूप से * आप * से असहमत नहीं था! –