python - 如何将文件移动到同一存储桶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'
文件被移动。
我想知道是否有办法在命令行中读取变量的名称,谢谢!
解决方案
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。
推荐阅读
- jenkins - 如何覆盖我的全局代理以在詹金斯声明性管道中的另一个代理上运行特定阶段?
- java - 如何使用 Glide 下载多张图片?
- python-3.x - discord.py ClientConnectorError 引发处理
- r - 如何跨用户 ID # 应用 if else 语句?
- dart - 如何从 gmail 发送电子邮件到另一个电子邮件帐户
- mysql - 如何将表 2 中的一些值和一些文字值插入到 table1 中?
- java - PDFBOX 2.0.18 - 如何遍历 PDF 页面并检索特定字段
- r - 为什么 `select_if(., is_double)` 返回日期?
- sql - 如何在 SQL 中将具有成对关系的行合并为单行
- python-3.x - 计算多个城市的中心点纬度/经度