我有一个python脚本,我希望能够将文件拖放到。所以我把它包装在Automator应用程序中。所述应用程序具有单个Run Shell Script
,其内容类似于:
export PATH=${PATH}:/usr/local/bin:/usr/local/CrossPack-AVR/bin
cd /Applications/MyApp
/Applications/MyApp/doIt.py "$1"
这很有效。我的python脚本在$1
中显示sys.argv[1]
时运行。所述脚本虽然产生了相当多的输出。我想打开一些显示输出的窗口。我不介意用户是否必须关闭它。我Automator
的行动中没有看到任何内容。我试过做类似的事情:
open -a Terminal /Applications/MyApp/doIt.py "$1"
不幸的是,这似乎并没有继承环境。它也没有将$1
传递给python脚本,但也尝试打开它。
所以我正在寻找一种方法,打开某些东西(终端或其他),它可以捕获并滚动该脚本运行时的stdout,这是从脚本中调用的。
答案 0 :(得分:5)
在Automator中,参数和变量可以使用特殊变量传递:
$@
要从Automator中运行的脚本或任务获取输出,您可以单击脚本下方的结果(隐藏按钮)以查看任何输出。此外,您可以设置另一个bash脚本以将输出传递给stdout或您选择的任何其他位置。
此示例显示了一个将输出和变量发送到bash脚本的python脚本。您可以将输入作为参数传递,也可以传递给stdin:
答案 1 :(得分:3)
我不在我的Mac上,所以这是未经测试的,但我很确定它可以用于少量编辑......
更改您的脚本,使其看起来像这样,您的python脚本在后台运行,将其输出保存到临时文件$$.tmp
,其中$$
是您的进程ID(pid):
export PATH=${PATH}:/usr/local/bin:/usr/local/CrossPack-AVR/bin
cd /Applications/MyApp
/Applications/MyApp/doIt.py "$1" > $$.tmp &
现在在最后添加以下行,以便1)创建一个脚本来记录日志文件,2)使其可执行,3)执行它:
echo "tail -f $$.tmp" > x.command
chmod +x x.command
open x.command
我建议将x.command
重命名为$$.command
,以便您可以从多个用户多次运行它,而无需各个用户之间的互动。您还应该在使用后清理并删除临时文件。