2013-10-14 56 views
3

我想將一個字符串列表作爲參數傳遞到結構任務。例如,對於以下fabfile:將字符串列表傳遞到結構任務

def test(names): 
    print names 

我想通過「工廠測試:湯姆,迪克,哈里]」,並有清單打印出來。

默認情況下可以在結構中執行此操作嗎,還是需要傳遞字符串並自行拆分?

謝謝!

回答

8

一種方法是使用位置ARGS:

@task 
def mytask(*args): 
    print args 

然後調用這樣說:

$ fab mytask:foo,bar,baz 
('foo', 'bar', 'baz') 

注意,你得到的參數作爲一個元組,而不是一個列表,但這應該沒有太大的區別。

如果這不適合你,你需要更多的東西,你可能必須自己解析這些論點。

參見:http://docs.fabfile.org/en/1.8/usage/fab.html#per-task-arguments

4

面料似乎隨時擴展列表或元組爲單個參數,所以這裏就是我做什麼:

def test(names): 
    if isinstance(names, basestring): 
     names = names.split(";") 
    for name in names: 
     # do something for every name... 

這樣,編程,我仍然可以通過列表或元組命名爲這個函數,爲了測試的目的,我可以在命令行中指定它們作爲以分號分隔的字符串:

fab -f fabfile.py test:'tom;dick;harry'