首页 > 解决方案 > 如何将文件移动到同一存储桶aws中的不同文件夹?

问题描述

我有一个小问题,我试图将一个特定文件从一个文件夹移动到同一个存储桶中的另一个文件夹,文件名存储在一个变量中。实际上,在执行该命令时,文件名并没有被正确读取。这是示例:

    times = time.strftime("%Y/%m/%d-%H:%M:%S") 
    name="test1" 
    if "test" in name: 
        cmd='aws s3 mv s3://bucket_name/folder/folder1/"$name" 
         s3://bucket_name/folder/folder2/"$name_$times"'
        proc=subprocess.Popen(cmd, shell=True, stdout = subprocess.PIPE) 
        try:
           outs, errs = proc.communicate(timeout=15) 
        except TimeoutExpired: 
           proc.kill() outs, errs = proc.communicate()**

结果:文件不动

但是当我使用:

    cmd='aws s3 mv s3://bucket_name/folder/folder1/test1 
     s3://bucket_name/folder/folder2/test1_2021'

文件被移动。

我想知道是否有办法在命令行中读取变量的名称,谢谢!

标签: pythonamazon-web-servicesfilebucketmv

解决方案


Python 字符串插值不能这样工作。您需要(Python 3.6 及更高版本)

cmd=f'aws s3 mv s3://bucket_name/folder/folder1/{name} s3://bucket_name/folder/folder2/{name}_{times}'

此外,时间格式不正确。它将创建类似的东西'2021/11/02-14:36:02',它不能是文件名的一部分。

您可以使用输入来读取变量的名称。

我强烈建议使用 boto3 而不是创建一个进程来调用 AWS CLI。


推荐阅读