Я нашел обходной путь при вызове сценария python из сценария оболочки из automator (версия 2.1.1 в mac os x 10.6.8) (python 2.6.1). Моя проблема в том, что os.system ("mkdir foo") работает в (очень специфическом) случае, когда subprocess.call ("mkdir foo") также делает каталог , но затем заставляет automator выдавать ошибку.
Цель моего приложения-автоматизатора - принять перетаскиваемое на него изображение.
Приложение automator имеет только одно действие: «запустить скрипт оболочки» со следующим кодом:
for f in "$@"
do
python dphoto_pythons/uploader.py $f > dphoto_pythons/auto_output.txt
done
$ f - имя перетаскиваемого изображения. («Запуск сценария оболочки» настроен на передачу ввода в качестве аргументов.)
Вот странная часть:
в скрипте uploader.py я звонил так:
retcode=call("mkdir " + dir_full, shell=True) # THIS CAUSES A ERROR IN AUTOMATOR
print "***DOESN'T GET HERE WHEN RUN IN AUTOMATOR****"
Это делает каталог. но не доходит до следующего утверждения. А автоматор выдаст диалоговое окно с сообщением об ошибке (которое просто говорит, что я должен проверить свой скрипт).
Напротив, если я вызвал uploader.py «вручную» из терминала:
"python uploader.py someimage.jpg"
это работало без заминок.
Немного подумав, я попытался заменить call на os.system:
os.system("mkdir " + stu_dir_full)
####retcode=call("mkdir " + stu_dir_full, shell=True) # BUG
Это работает с автомата и с терминала.
У меня такое ощущение, что я упускаю из виду нечто очевидное, потому что это такая странная проблема. Но я подумал, что в любом случае это произойдет. Есть мысли?
-Mel