Python Sh包,如何传递未知数量的参数?

时间:2015-11-30 14:03:19

标签: python synchronization aws-cli

我使用sh包执行一些aws cli命令。

我有多个命名标志传递给命令..

s3=sh.aws.bake('s3')
s3.sync(origin, destination, exclude="a", exclude="b")

但是,我不知道有多少不包括在内。它们存储在列表中。

我试过这个,看起来它应该可以工作,但它没有......

sync = s3.sync
for pattern in exclude:
    sync = sync.bake("--exclude=\""+pattern+"\"")

s3.sync(origin, destination)

它确实附加了args,因为我可以让它来打印命令,但它只是不使用它们!

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我最后加入了*args*kwargs

s3=sh.aws.bake('s3')
args = [
  origin,
  destination,
  "--delete"
]

for pattern in exclude:
  args.extend(["--exclude", pattern])

for pattern in include:
  args.extend(["--include", pattern])

kwargs = {'_iter':True}

output = s3.sync( *args, **kwargs )