Предполагая, что у «файла A» всегда будет дата в конце, вы можете использовать часть «A» в поиске префикса. С S3 нужно помнить, что нет такой вещи как папок . Это то, что вы подразумеваете, используя «/» в названии ключа. S3 работает только с Buckets / Keys.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *, так как это новейшее поле last_modified
. Один из подходов заключается в сортировке списка объектов (из файлов «A») по этому атрибуту:
from operator import attrgetter
objs = s3.Bucket('Bucket 1').objects.filter(Prefix='Company A/File A')
# sort the objects based on 'obj.last_modified'
sorted_objs = sorted(objs, key=attrgetter('last_modified'))
# The latest version of the file (the last one in the list)
latest = sorted_objs.pop()
В качестве примера: я создал foo1.txt, foo2.txt, foo3.txt по порядку. Затем foo10.txt, foo5.txt. foo5.txt - мой последний файл "foo".
>>> b.upload_file('/var/tmp/foo.txt','foo10.txt')
>>> b.upload_file('/var/tmp/foo.txt','foo5.txt')
>>> [i.key for i in b.objects.all()] ## no ordering
['foo.txt', 'foo10.txt', 'foo2.txt', 'foo3.txt', 'foo5.txt']
>>> f2 = sorted(b.objects.all(), key=attrgetter('last_modified'))
>>> f2
[s3.ObjectSummary(bucket_name='foobar', key='foo.txt'), s3.ObjectSummary(bucket_name='foobar', key='foo2.txt'), s3.ObjectSummary(bucket_name='foobar', key='foo3.txt'), s3.ObjectSummary(bucket_name='foobar', key='foo10.txt'), s3.ObjectSummary(bucket_name='foobar', key='foo5.txt')]
>>> f2.pop()
s3.ObjectSummary(bucket_name='foobar', key='foo5.txt')
Подробнее о сортировке Python см. https://wiki.python.org/moin/HowTo/Sorting