将变量从python传递到applescrip

2024-05-29 01:56:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让python脚本在击键时将文本文件中的字符传递到OSX中。 文本文件的格式为一列字符:

它被读入一个列表(称为行)。这一位似乎起作用了,例如,当我键入行[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?


Tags: 方法inimport脚本编辑列表for键入
1条回答
网友
1楼 · 发布于 2024-05-29 01:56:04

它不高兴的是,您试图在Python程序中使用命令行指令—Python看到osascript -e 'tell application "System Events" to keystroke list[f]',认为您想从osascript中减去{},但却不知道如何处理字符串'tell application "System Events" to keystroke list[f]'。在

你做错了很多事情。首先,您发布的代码不可能是您实际拥有的代码,因为您在for循环中丢失了冒号(它应该会抱怨这个问题),并且没有缩进进入for循环中的代码。其次,您导入了os,我假设您希望使用os.system作为命令行指令。第三,您不应该调用列表list,因为名称list已经用于实际的list类(这是一个有用的东西,因为,例如,它允许您执行类似list('foobar')的操作来创建列表['f', 'o', 'o', 'b', 'a', 'r'])。第四,如果你想循环列表中的每一项,actually do that。第五,如果您编写一个类似"keystroke x[y]"的字符串,那么变量x和{}(假设它们存在)是不相关的:您要求字符串包含实际的字母'x'和{}(以及一些方括号)。您需要实际构建一个包含列表中适当字符的字符串。在

相关问题 更多 >

    热门问题