【发布时间】:2014-03-18 00:42:46
【问题描述】:
这是我的小程序的要点
一个python脚本,它检查某个目录中是否有新文件(电影文件)并相应地更新sqlite3数据库,从而将要处理的文件排队。使用 launchctl 每分钟运行一次。
另一个使用 HandBrake 命令行界面执行转换文件的实际处理的 python 脚本。还使用 launchctl 每分钟运行一次。
在第二个脚本中,一旦转换完成,我想启动一个苹果脚本,它将文件导入 iTunes 中并带有某些元数据。
因此,目录中的新电影文件 -> 文件被排队 -> 文件被转换 -> 文件被导入 iTunes。
我遇到的问题是 applescript 部分。如果我通过终端运行我的第二个 python 脚本(转换然后导入的那个),一切都运行顺利。该文件被转换,然后 applescript 将其导入 iTunes。但如果是启动脚本的launchctl,它似乎跳过了applescript部分。
这是python中的applescript的一点
import subprocess, shlex
cmd = "/usr/bin/osascript /Users/alexis/Developer/Media/import_iTunes.scpt '{0}' ".format(file)
subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE)
还有applescript(为简单起见,我删除了一些部分)
on run argv
set newTrackPath to posix file (item 1 of argv)
tell application "iTunes"
activate
set newTrack to add newTrackPath
end tell
end run
我尝试过使用 subprocess.call(cmd)、os.system(cmd) 和 subprocess.Popen(cmd)。
问题似乎是当使用 launchctl 启动那个非常 python 脚本时,您无法从 python 启动 osascript。
有人有解释或解决方法吗?
谢谢
【问题讨论】:
-
刚刚尝试了(并编辑了我的问题),并使用了 applescript 的完整路径(以及我使用的 osascript),但仍然没有结果。
-
系统日志中有任何条目吗? (来自“实用程序”的 Console.app)
-
我的launchd上有这个com.apple.launchd.peruser.501。节流重生并将在 2 秒后开始。我能找到的就这些了。
-
有几个问题的答案可以指向EnvironmentalVariables
标签: python applescript launchd osascript