我试图在嵌入的applescript中使用python文件中定义的变量。我想把currentpath中的路径追加到osascript语句中提到的变量所在的位置。你知道吗
我已经尝试了链接中给出的所有方法和其他一些链接,但都不起作用:Pass variable into AppleScript from python
import os
import sys
currentpath = os.path.dirname(sys.argv[0])
com = ("""osascript -e 'tell application "Terminal" to do script "afplay {0}/Sounds/storm-9s.mp3"'""".format(currentpath))
os.system(com)
所有这些技巧都会导致相同的错误,我不确定问题是否出在python代码或applescript上。你知道吗
A94HDBSGHHHD:~ user$ afplay /Sounds/storm-9s.mp3
Unspecified exception
A94HDBSGHHHD:~ user$
更新:我的应用程序需要同时播放多个声音文件。使用子进程需要我的脚本通过管道传输声音文件,并且仅当第一个文件完全播放时才播放第二个文件。因此,我必须启动多个终端一起播放声音。 e、 我的代码播放a.mp3,然后在它完成播放之前,我的代码决定播放b.mp3。因此,它应该在不停止a.mp3的情况下开始播放b.mp3,并同时播放它们,直到a.mp3在文件结束时停止播放,然后b.mp3在文件播放结束时停止播放。你知道吗
首先,解决这个问题的最佳方法是完全避免AppleScript,直接从python运行“afplay”命令。如果您阅读了以下两个堆栈溢出问题:
您将看到您应该能够使用
popen
同时运行这些声音文件。你知道吗如果您真的需要AppleScript解决方案,那么我建议您忘记编写终端脚本,改用
do shell script
。这与直接从AppleScript运行shell命令基本相同,没有打开终端. 看起来是这样的:或者,如果你想冒险,你可以这样把它们连在一起:
假设currentpath(path0/path1)给出了正确的前缀,这应该可以工作;
&> /dev/null &
位告诉do shell script
分离进程并立即返回。但这又是一个迂回的过程:你让python告诉shell让AppleScript告诉shell做某事,每一次额外的上下文转换都会为出错创造机会。你知道吗相关问题 更多 >
编程相关推荐