我使用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,因为我可以让它来打印命令,但它只是不使用它们!
有什么想法吗?
答案 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 )