【问题标题】:Passing variable from python to applescript将变量从python传递到applescript
【发布时间】:2014-08-14 13:51:48
【问题描述】:

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

正在读入列表(称为行)。这一点似乎有效,例如,当我键入 lines[3] 时,第三个字符按预期打印。

我现在正在尝试使用 applescript 将此字符作为按键传递给 OSX,使用以下方法:

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

list[f] 部分似乎不太满意(语法错误,carat 在最后的撇号下方)。我怀疑这是因为变量 f 对这个命令不可用,出于某种原因,但我不确定。有人可以给点建议吗?我知道 for 循环中的位需要缩进,但由于某种原因,这个对话不会让我缩进它。在我正在测试的脚本中是正确的。

提前致谢。

编辑:

那些是拼写错误,应该是行,而不是列表,冒号应该在那里,并且应该缩进。修复所有这些后,我得到了相同的结果。我不能只遍历列表,这只是 for 循环的摘录,它需要以这种方式构造才能使其余部分正常工作。

如何修复以 osascript 开头的行?

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

【问题讨论】:

    标签: python applescript osascript keystrokes


    【解决方案1】:

    令人不快的是,您尝试在 Python 程序中使用命令行指令 - Python 看到 osascript -e 'tell application "System Events" to keystroke list[f]' 并认为您想从 osascript 中减去 e,但不知道是什么处理字符串'tell application "System Events" to keystroke list[f]'

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      • 1970-01-01
      • 2021-11-18
      • 2016-03-29
      相关资源
      最近更新 更多