【问题标题】:How to categorize files from Amazon S3 ls command?如何从 Amazon S3 ls 命令对文件进行分类?
【发布时间】:2021-11-25 01:54:11
【问题描述】:

使用以下(在 Python 中)创建 Amazon S3 存储桶中的文件名列表:

import os
os.system('aws s3 ls s3://bucket --recursive --human-readable --summarize')

输出是:

2021-10-02 21:37:53   10 MiB img.txt
2021-10-02 21:37:53   10 MiB img.jpg
2021-10-02 21:32:57   10 MiB img.json
2021-10-02 21:32:58   10 MiB img.png

Total Objects: 4
Total Size: 40 MiB

理想的输出应该是:

Total Objects: 4
Total Size: 40 MiB
.jpg count: 1
.png count 1
.json count 1
.txt count 1

Total Size 是一个变量,以后可以在该程序中使用。

【问题讨论】:

  • 我不明白您为什么要为此使用 AWS CLI。 Python 有 boto3 库,它可以使同样的任务变得更容易。
  • 实际上我想要文件的完整大小而不下载它。并希望获得所有元素的计数。如果可以使用 boto3。那么请帮帮我。
  • 我建议您查看 boto3 文档。有一个很好的页面,其中包含一些 example codes,您可能可以开始使用。
  • 在这种情况下,list_objects 调用可能是您想要检查的。这可以用来列出一个桶中的所有对象,并获取每个对象的大小。
  • 想要访问 EC2 机器。 import os os.system('ssh xxxxxxxxxxx.pem ubuntu@xx.xxx.xx.xx') 到第二行,它运行正常。但我想访问 EC2 机器中的子文件夹 Documents。我不能使用 os.system('cd Documents')。我想访问这个:ubuntu@xx.xxx.xx.xx:~/Documents $

标签: python linux amazon-web-services amazon-s3 aws-cli


【解决方案1】:

以下是使用 boto3 库的示例:

import boto3

extensions = {}
object_count = 0
total_size = 0

s3_resource = boto3.resource('s3')

for object in s3_resource.Bucket('my-bucket').objects.all():
    key = object.key
    object_count += 1
    total_size += object.size

    ext = key[key.rfind('.'):]
    extensions[ext] = extensions.get(ext, 0) + 1

print('Total Objects:', object_count)
print('Total size (MiB):', total_size // 1024 // 1024)
for ext in extensions:
    print(ext, extensions[ext])

【讨论】:

  • 想要访问 EC2 机器。 import os os.system('ssh xxxxxxxxxxx.pem ubuntu@xx.xxx.xx.xx') 到第二行,它运行正常。但我想访问 EC2 机器中的子文件夹 Documents。我不能使用 os.system('cd Documents')。我想访问这个:ubuntu@xx.xxx.xx.xx:~/Documents $
  • @Codu 您似乎在询问与您的原始问题无关的内容。请创建一个新问题,而不是通过对此问题的评论来提问。我还建议不要从代码中使用 SSH——可能有更好的方法来实现您的 actual 目标(无论是什么),所以当您创建新问题时,请包含 what 的详细信息 您想要实现而不是如何 尝试实现它(例如,如果您想将文件复制到 EC2 实例/从 EC2 实例复制文件)。
  • 先生,我是 AWS 的新手...请帮帮我...我应该使用 ......... 'my_bucket' as 'aws s3 ls s3://xxxxxxxxxxxxxxxx /'?
  • @Codu 我不明白你在问什么。
猜你喜欢
  • 2015-01-23
  • 1970-01-01
  • 2016-08-17
  • 2015-04-08
  • 1970-01-01
  • 2019-07-23
  • 2017-04-04
  • 2017-03-04
相关资源
最近更新 更多