繁体   English   中英

循环遍历文件以从 s3 - boto3 中删除文件?

[英]Looping through a file to delete files from s3 - boto3?

这可能是非常基本的,但我是新手,所以请多多包涵!

我得到了存储在 s3 中的需要永久删除的对象列表。 这个列表只是一个我无法控制的 .txt 文件,但它确实包含所有需要删除的特定键,例如:

folder1/file1.xyz 
folder1/file2.xyz
folder2/file1.xyz

这就是我正在尝试的,它似乎并没有真正删除对象:

import boto3
s3 = boto3.client('s3')
s3bucket = "my bucket"
trn = "list.txt"

with open(trn) as trn_list:
    for line in trn_list:
         s3.delete_object(Bucket=s3bucket, Key=line)

如果我指定一个要删除的键而不是循环遍历文件,它会起作用并且 object 被删除,例如:

s3.delete_object(Bucket=s3bucket, Key=folder1/file1.xyz)

但是当我尝试将删除包含在循环中时,它似乎永远不会删除任何内容。 如果我运行循环以仅打印(行) ,那么它会正确打印出 .txt 文件中的每个键。

我需要以不同的方式执行此操作吗? 任何建议表示赞赏。

当您遍历每一行时,该行将包含字符串中的换行符,因此您需要在将其用作调用 boto3 的键之前将其删除:

    for line in trn_list:
         s3.delete_object(Bucket=s3bucket, Key=line.strip())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM