这是我的小程序的要点
一个python脚本,它检查某个目录中是否有新文件(电影文件)并相应地更新sqlite3数据库,从而将要处理的文件排队。使用 launchctl 每分钟运行一次。
另一个使用 HandBrake 命令行界面执行转换文件的实际处理的 python 脚本。还使用 launchctl 每分钟运行一次。
在第二个脚本中,一旦转换完成,我想启动一个applescript,它将文件导入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。
有人有解释或解决方法吗?
谢谢