2012-01-04 59 views
0

我在我的項目上運行nosetests--with-snort用於Growl通知。將參數傳遞給被調用的腳本

問題是我有一些放在路徑上的lib文件,所以我有一個自定義的python腳本bin/python

我沒有任何問題,通過我的bin/python跑步鼻子做which nosetests並使用該可執行文件 - bin/python /usr/local/bin/nosetests。但是現在我該如何通過標記nosetests?任何標誌都將改爲bin/python

+0

你能給我們一個你試過的命令的例子嗎?你應該改變你的問題來闡明'nosetests'本身是用'#!/ usr/bin/python'編寫的,並且給出你想要做什麼的更多細節。你希望使用自定義的'#!'python包裝器將args傳遞給python,並且你還希望通過args來自我測試? – 2012-01-04 12:02:46

回答

3

是什麼讓你覺得旗子會去bin/python?你測試過了嗎?如果我寫一個簡單的程序測試了這一點:

import sys 
print sys.argv[1:] 

我從這些例子中,下列輸出中調用(假設我已經在一個名爲test.py文件保存在此)

python test.py打印[]

python test.py 5打印['5']

python -i test.py 5打印['5'](然後將控制傳遞給因爲的解釋器國旗)。

所以標誌腳本名稱被傳遞到Python 之前,國旗後腳本名傳遞到腳本。所以,在你的榜樣,只要使用

bin/python /usr/local/bin/nosetests --with-snort 

一些,這是Python的文檔中convered在Invoking the Interpreter

+0

是的......問題在於'subprocess.check_output'在'nosetests'檢查的末尾附加'\ n'。這導致標誌移動到一個新行並被視爲一個新的命令。同樣的事情發生在紅寶石反引號中。只需要做一個'rstrip'。 – 2012-01-04 12:07:50