Получение последней измененной даты для каждой папки в подкаталоге в AWS S3 с помощью Python

#python #amazon-s3 #boto3

#python #amazon-s3 #boto3

Вопрос:

Я пытаюсь найти дату последнего изменения для всех папок в S3. Ниже приведено то, что я придумал до сих пор, в котором перечислены все вложенные папки в пути. Это просто отображает все имена вложенных папок, но я пытаюсь также получить дату последнего изменения для каждой из этих папок.

 from boto.s3.connection import S3Connection
import pandas as pd


# Create connection
conn = S3Connection(key_id, secret_key)


# Connet to a specific bucket
bucket = conn.get_bucket('bucket-name')


# Get subdirectory info
for key in bucket.list(prefix='folder/', delimiter='/',):
    print(key.name)
  

Обновить

Просмотр того, как данные хранятся в S3

 bucket-name
    folder
        sub-folder
            date
                file1.csv
                file2.csv
                file3.csv
  

Ответ №1:

Ваш вопрос помечен boto3 , поэтому я дам ответ в boto3 , а не boto .

 import boto3

# Create connection
session = boto3.Session(
    aws_access_key_id='xxxxxxx', 
    aws_secret_access_key='yyyyyyyyyyyyyy')

s3r = session.resource('s3')

# Connect to a specific bucket
bucket = s3r.Bucket('bucket-name')

# Get subdirectory info
for obj in bucket.objects.filter(Prefix='folder/', Delimiter='/'):
    print(obj.key, obj.last_modified)
  

Комментарии:

1. спасибо за ответ. Однако при попытке выполнить последнюю строку не выводится и не выдается ошибка.. Было установлено только внесенное мной изменение Prefix='folder/sub-folder/'

2. @KevinNash Не уверен, что ты имеешь в виду. Это работает отлично. Возможно, вы могли бы обновить свой вопрос, указав именно ту структуру папок, которая у вас есть, и новую версию вашего кода.

3. Я отредактировал свой первоначальный пост со структурой, в которой находятся данные. Я пытаюсь проверить, когда было date последнее изменение. Надеюсь, это внесет некоторую ясность в то, что я пытаюсь получить. Спасибо

4. @KevinNash Попробуйте без Delimiter='/' .

5. Я попробовал это, и он возвращает все файлы во вложенных папках