我想將一個字符串列表作爲參數傳遞到結構任務。例如,對於以下fabfile:將字符串列表傳遞到結構任務
def test(names):
print names
我想通過「工廠測試:湯姆,迪克,哈里]」,並有清單打印出來。
默認情況下可以在結構中執行此操作嗎,還是需要傳遞字符串並自行拆分?
謝謝!
我想將一個字符串列表作爲參數傳遞到結構任務。例如,對於以下fabfile:將字符串列表傳遞到結構任務
def test(names):
print names
我想通過「工廠測試:湯姆,迪克,哈里]」,並有清單打印出來。
默認情況下可以在結構中執行此操作嗎,還是需要傳遞字符串並自行拆分?
謝謝!
一種方法是使用位置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
面料似乎隨時擴展列表或元組爲單個參數,所以這裏就是我做什麼:
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'