将变量从python传递给applescript

时间:2014-08-14 13:51:49

标签: python applescript osascript keystrokes

我正在尝试让python脚本将文本文件中的字符作为按键传递到OSX中。 文本文件的格式为一列字符:

正在读入列表(称为行)。这个位似乎有效,例如,当我输入行[3]时,正如预期的那样打印第三个字符。

我现在正尝试使用applescript将此字符作为OSX的击键传递,使用以下内容:

import os 
for f in xrange ( VALUE ):
osascript -e 'tell application "System Events" to keystroke linesf]'

列表[f]部分似乎不高兴(语法错误,克拉位于最终撇号之下)。我怀疑是因为变量f由于某种原因不能用于此命令,但我不确定。有人可以提出任何建议吗?我知道for循环中的位需要缩进,但是由于某种原因,这个对话不会让我缩进它。我正在测试的脚本中是正确的。

提前感谢。

编辑:

那些是拼写错误,它应该是行,而不是列表,冒号应该在那里,它应该缩进。解决所有这些后,我得到了相同的结果。我不能只是遍历列表,这只是for循环的摘录,它需要以这种方式构建,以便其余的工作。

如何修复osascript开头的行?

顺便说一下,我通过编辑这个问题的接受答案得到了这个: Is there a sendKey for Mac in Python?

1 个答案:

答案 0 :(得分:1)

您不满意的是,您尝试在Python程序中使用命令行指令 - Python看到osascript -e 'tell application "System Events" to keystroke list[f]'并认为您要从e中减去osascript 'tell application "System Events" to keystroke list[f]',但后来不知道如何处理字符串for

这里有很多你做错的事。首先,您发布的代码可能不是您实际拥有的代码,因为您错过了for循环中的冒号(相反应该抱怨)没有缩进os循环内部的代码。其次,您已导入os.system,我认为您需要将list用于命令行指令。第三,你不应该调用列表list,因为名称list('foobar')已经被用于实际的列表类(这是一个有用的东西,因为,例如,它可以让你做['f', 'o', 'o', 'b', 'a', 'r']之类的内容可以创建列表"keystroke x[y]")。第四,如果你想循环遍历列表中的每个项目,actually do that。第五,如果你写一个像x这样的字符串,那么变量y'x'(假设它们存在)是无关紧要的:你要求字符串包含实际的字母'y'和{{1}}(以及一些方括号)。您需要实际构建一个包含列表中相应字符的字符串。