子流程未使用Awscli排除并包含过滤器

时间:2018-08-17 02:05:18

标签: python python-3.x boto3 aws-cli

我有这个python脚本并且可以执行,但是“参数”部分不包括在内。结果,所有来自“路径”的文件都下载到“目标”。理想情况下,它还应该包含“参数”部分,其中包含“排除”和“包含”过滤器。

如何允许执行此脚本的“参数”部分?

我也可以使用boto3等解决方法。

Import awscli    
Import os
Import time   

path = 's3://source/treasure/'
target = 'C:\\Home\\Day\\'
parameter = ' --recursive --exclude "*" --include "status.2018-'
monthlog = time.strftime("%m-%d") 
execute='aws s3 cp '+path+' '+target+''+parameter+''+monthlog+'.log"'

subprocess.run(['cmd','/c',execute])

参考: https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#use-of-exclude-and-include-filters

1 个答案:

答案 0 :(得分:0)

您可以使用shell=True或将参数分成一个列表:

execute = ['aws', 's3', 'cp', path, target, '--recursive', '--exclude', '*', --include, 'status.2018-%m-%d.log']

请注意,如果不使用*,则不需要在shell=True周围加上引号,因为引号仅用于抑制shell扩展;如果不使用外壳,则无需隐藏该外壳,可以直接按通配符。