2011-06-10 65 views
1

根據Ignacio的建議(Python remove spaces and append)我試圖將以下命令轉換爲使用subprocess而不是os.system使用Python子進程而不是os.system

腳本:os.system("/usr/local/bin/growlnotify -n emesene -a emesene -t """+title+""" -m """+text+"""""")

我會思考:subprocess.call(['/usr/local/bin/growlnotify', '-n emesene', '-a emesene', '-t ""+title+"""', '-m """+text+"""""'], shell=True)

但它不工作。任何想法如何得到這個工作?我查看了Python文檔並查看了這裏,但我無法弄清楚它!

BTW的titletext距離的emesene信使通知系統

+0

考慮接受伊格納西奧的答案在相關的問題。 – 2011-06-10 17:55:50

+0

哎呦,我以爲。 – 2011-06-10 18:01:46

回答

4

當您使用列表傳遞命令時,您不希望「shell = True」。 我本來只是評論這樣的傑里米銀行的職位(因爲他的shlex.split語句是最顯着的),但我目前不具備代表這樣做:/

subprocess.call(['/usr/local/bin/growlnotify', '-n', 'emesene', '-a', 'emesene', '-t', title, '-m', text]) 
+0

完美的作品,謝謝! – 2011-06-10 18:40:41

5

而不是

subprocess.call(['/usr/local/bin/growlnotify', '-n emesene', '-a emesene', '-t ""+title+"""', '-m """+text+"""""'], shell=True) 

使用變量

subprocess.call(['/usr/local/bin/growlnotify', '-n', 'emesene', '-a', 'emesene', '-t', title, '-m', text], shell=True) 

無論你在shell命令有一個不帶引號的空間,分裂另一項目清單。

shlex.split函數可用於從shell風格的命令轉換爲子進程排序所期望的列表。

+0

不起作用。給出一個空白的通知,所以我想它沒有采取變量。 – 2011-06-10 17:52:08

相關問題