2012-01-04 47 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