2012-11-22 52 views
1

我寫的Linux下有小的Python腳本彈出一些libnotify彈出窗口,目前使用的語法如下:的Python os.exec():終止運行「通知,發送」

import os 
os.execv('/usr/bin/notify-send', ['App Title', 'Message']) 

不幸的是,由於某種奇怪的原因,它會將解釋器直接殺死命令提示符。
它不會對腳本執行的任何其他命令執行此操作,只是notify-send

沒有錯誤發生,沒有已知的異常拋出,沒有任何錯誤的跡象,它只是死於命令提示符。

有沒有人有同樣容易做的建議或選擇?

+0

爲什麼不使用os.system()? –

+0

因爲那麼我不得不弄清楚如何管理所有適當的雙引號和單引號標記,以及轉義任何嵌入的引號。這樣,參數已經很好地封裝了。 – Raceimaztion

+0

你可以把它們放在變量中並將它們連接起來,並用它作爲對os.system()的調用。 –

回答

4

您應該使用subprocess.call它首先它的參數指定的程序在新的進程,並等待子進程退出,而不是os.execv它取代了什麼是由它的參數指定的程序當前的進程中運行。

使用方法是subprocess.call(['/usr/bin/notify-send', 'App Title', 'Message'])