以交互方式/实时制作osascript打印标准输出

时间:2018-03-07 15:09:13

标签: python terminal applescript stdout osascript

好的,所以我有这个非常简单的python脚本:

import time
import sys

for i in range(25):
    time.sleep(1)
    print(i)

sys.exit()

当我使用python运行它(/usr/local/bin/python3.6 testscript.py)时,一切正常,输出显示:

1
2
3
4
etc..

每个数字后打印1秒。

但是当我跑步时:

/usr/bin/osascript -e 'do shell script "/usr/local/bin/python3.6 testscript.py" with prompt "Sart Testing " with administrator privileges'

25秒内没有任何输出,最后打印出来:

24

到终端。

问题是:如何让osascript打印出与我直接运行Python脚本完全相同的输出?

1 个答案:

答案 0 :(得分:1)

AppleScript的 do shell script 命令在非交互式shell中运行,因此您无法执行osascript 命令就像你拥有它一样,并希望它输出与通过python运行python 脚本相同或直接运行。换句话说,直接添加python shebang 并使文件可执行,因此{strong>终端中的./testscript.py就是您所需要的。或者使用终端及其do script 命令osascript一起使用。

python 代码保存为。 e.g:

#!/usr/local/bin/python3.6

import time
import sys

for i in range(25):
    time.sleep(1)
    print(i)

sys.exit()

使其可执行:

chmod u+x testscript.py

在终端中运行:

./testscript.py

或者:

osascript -e 'tell app "Terminal" to do script "/path/to/testscript.py"'

使用终端 {{1 } 命令

python