Как я могу увидеть, что внутри ведра в S3 с boto3
? (т.е. делать "ls"
)?
Делать следующее:
import boto3
s3 = boto3.resource('s3')
my_bucket = s3.Bucket('some/path/')
возвращает:
s3.Bucket(name='some/path/')
Как я вижу его содержимое?
Один из способов просмотра содержимого:
for my_bucket_object in my_bucket.objects.all():
print(my_bucket_object)
mybucket.objects.filter(Prefix='foo/bar')
и он будет перечислять только объекты с этим префиксом. Вы также можете передатьDelimiter
параметр.object
в качестве имени переменной, поскольку она будет скрывать глобальный типobject
.Это похоже на 'ls', но оно не учитывает соглашение о префиксной папке и перечисляет объекты в корзине. Читатель может отфильтровать префиксы, которые являются частью имени ключа.
В Python 2:
В Python 3:
источник
conn.list_objects(Bucket='bucket_name', Prefix='prefix_string')['Contents']
Я предполагаю, что вы настроили аутентификацию отдельно.
источник
Если вы хотите передать ключи ACCESS и SECRET (что делать не следует, потому что это небезопасно):
источник
Чтобы обрабатывать большие списки ключей (например, когда список каталогов превышает 1000 элементов), я использовал следующий код для накопления значений ключей (т.е. имен файлов) с несколькими списками (спасибо Амелио выше за первые строки). Код для python3:
источник
Моя служебная функция s3
keys
по сути является оптимизированной версией ответа @ Hephaestus:В моих тестах (boto3 1.9.84) это значительно быстрее, чем эквивалентный (но более простой) код:
Поскольку S3 гарантирует результаты в двоичном формате UTF-8 ,
start_after
оптимизация была добавлена к первой функции.источник
list()
чтобы вернуть список файлов.Более экономным способом, вместо того, чтобы перебирать цикл for, вы также можете просто напечатать исходный объект, содержащий все файлы внутри вашей корзины S3:
источник
files_in_s3
это «объект списка». В Python такого нет. Скорее, это итеративный код, и я не смог заставить ваш код работать, и поэтому я отказался Тогда я обнаружил ошибку и понял вашу точку зрения, но не смог отменить мое понижение.ObjectSummary:
Есть два идентификатора, которые прикреплены к ObjectSummary:
boto3 S3: ObjectSummary
Подробнее об объектных ключах из документации AWS S3:
Вот пример кода, который демонстрирует, как получить имя корзины и ключ объекта.
Пример:
источник
Я просто сделал это так, включая метод аутентификации:
источник
источник
ls
. Как бы ты это сделал .. только распечатай файлы в корнеС небольшим изменением кода @Hephaeastus в одном из вышеприведенных комментариев, написал метод ниже, чтобы вывести список папок и объектов (файлов) по заданному пути. Работает аналогично команде s3 ls.
Это перечисляет все объекты / папки в данном пути. Folder_path можно оставить равным None по умолчанию, и метод выведет список непосредственного содержимого корня сегмента.
источник
Вот решение
импорт boto3
s3 = boto3.resource ('s3')
BUCKET_NAME = 'Ваше имя S3 Bucket, например,' deletemetesting11 ''
allFiles = s3.Bucket (BUCKET_NAME) .objects.all ()
для файла в allFiles: печать (file.key)
источник
Итак, вы просите эквивалент
aws s3 ls
в boto3. Это будет список всех папок и файлов верхнего уровня. Это самое близкое, что я мог получить; в нем перечислены только все папки верхнего уровня. Удивительно, насколько сложна такая простая операция.источник
Вот простая функция, которая возвращает вам имена файлов всех файлов или файлов с определенными типами, такими как «json», «jpg».
источник
Это также можно сделать следующим образом:
источник