Can someone show me how to pass a variable into an Applescript using osascript in python? I've seen some documentation/samples on doing this but I'm not understanding it at all.
Here is my python code:
# I want to pass this value into my apple script below
myPythonVariable = 10
cmd = """
osascript -e '
tell application "System Events"
set activeApp to name of first application process whose frontmost is true
if "MyApp" is in activeApp then
set stepCount to myPythonVariableIPassIn
repeat with i from 1 to stepCount
DoStuff...
end repeat
end if
end tell
'
"""
os.system(cmd)
asked Aug 27, 2016 at 19:52
LampShade
2,7757 gold badges39 silver badges60 bronze badges
-
Possible duplicate of: stackoverflow.com/questions/13502836/…Chris– Chris2016年08月27日 20:12:13 +00:00Commented Aug 27, 2016 at 20:12
-
In the solution to that one he's passing in '/Setup.scpt'. I was hoping to inline the applescript code right in my python code rather than having a ton of separate .scpt files I have to manage.LampShade– LampShade2016年08月27日 20:29:15 +00:00Commented Aug 27, 2016 at 20:29
1 Answer 1
String concatenation with the + operator
myPythonVariable = 10
cmd = """
osascript -e '
tell application "System Events"
set activeApp to name of first application process whose frontmost is true
if "MyApp" is in activeApp then
set stepCount to """ + str(myPythonVariable) + """
repeat with i from 1 to stepCount
-- do something
end repeat
end if
end tell
'
"""
Or, string formatting with the {} :
myPythonVariable = 10
cmd = """
osascript -e '
tell application "System Events"
set activeApp to name of first application process whose frontmost is true
if "MyApp" is in activeApp then
set stepCount to {0}
repeat with i from 1 to stepCount
-- do something
end repeat
end if
end tell
'
""".format(myPythonVariable)
{0} is the place-holder for the first variable, {1} is the place-holder for the second variable, ....
For multiple variables:
.format(myPythonVariable, var2, var3)
Or, string formatting with the %s operator
myPythonVariable = 10
cmd = """
osascript -e '
tell application "System Events"
set activeApp to name of first application process whose frontmost is true
if "MyApp" is in activeApp then
set stepCount to %s
repeat with i from 1 to stepCount
-- do something
end repeat
end if
end tell
'
""" % myPythonVariable
For multiple variables:
% (myPythonVariable, var2, var3)
answered Aug 28, 2016 at 15:36
jackjr300
7,1912 gold badges17 silver badges25 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
lang-py