2011-10-15 121 views
0

我從automator中調用了一個shell腳本中的python腳本(mac os x 10.6.8中的版本2.1.1)時發現了一個解決方法(python 2.6.1 )。我的問題是,os.system(「mkdir foo」)在subprocess.call(「mkdir foo」)也使目錄(但非常具體)的情況下工作,但隨後使automator發生錯誤。python in applescript:subprocess.call vs os.system in automator

我的automator應用程序的目的是接受拖放到它上面的圖像。 的自動機的應用程序只有一個動作:「運行shell腳本」用下面的代碼:

for f in "[email protected]" 
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更換電話:

os.system("mkdir " + stu_dir_full) 
####retcode=call("mkdir " + stu_dir_full, shell=True) # BUG 

這從自動機和終端工作。 我有一種感覺,我看起來很明顯,因爲這是一個奇怪的問題。但是我認爲無論如何我都會把它放在那裏。有什麼想法嗎?

-Mel

+0

使用/ Applications/Utilites中的Console.app來檢查你的系統日誌;很可能有相關的錯誤消息。但爲什麼讓它如此複雜?使用內置的Python庫函數「os.mkdir()」http://docs.python.org/library/os.html#os.mkdir –

+0

爲什麼在這個世界上,你只是爲了創建一個目錄而掏空? – kindall

回答

0

你可以使用os.mkdir(stu_dir_full)...

但你與subprocess.call線的問題可能是subprocess.call期待一個列表不是一個字符串。試試這個:

retcode = call(["mkdir",dir_full], shell=True)