我正在尝试让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?
答案 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}}(以及一些方括号)。您需要实际构建一个包含列表中相应字符的字符串。