从 automator(mac os x 10.6.8 中的 2.1.1 版)(python 2.6.1)的 shell 脚本调用 python 脚本时,我发现了一种解决方法。我的问题是 os.system("mkdir foo") 在 subprocess.call("mkdir foo")也创建目录但随后使自动机抛出错误的(非常具体的)情况下工作。
我的自动化应用程序的目的是接受拖放到其上的图像。automator 应用程序只有一个操作:使用以下代码“运行 shell 脚本”:
for f in "$@"
do
python dphoto_pythons/uploader.py $f > dphoto_pythons/auto_output.txt
done
$f 是拖动图像的名称。(“运行 shell 脚本”设置为将输入作为参数传递。)这是奇怪的部分:
在'uploader.py'脚本中,我这样称呼:
retcode=call("mkdir " + dir_full, shell=True) # THIS CAUSES A ERROR IN AUTOMATOR
print "***DOESN'T GET HERE WHEN RUN IN AUTOMATOR****"
它使目录。但没有进入下一个语句。automator 会抛出一个错误对话框(它只是说我应该去检查我的脚本)。
相比之下,如果我从终端“手动”调用 uploader.py:
"python uploader.py someimage.jpg"
它工作顺利。在对此感到困惑之后,我尝试用 os.system 替换 call:
os.system("mkdir " + stu_dir_full)
####retcode=call("mkdir " + stu_dir_full, shell=True) # BUG
这适用于自动机和终端。我有一种感觉,我忽略了一些明显的事情,因为这是一个非常奇怪的问题。但我想无论如何我都会把它放在那里。有什么想法吗?
-梅尔