2016-01-25 1 views
0

Я использую Boto библиотеки для импорта данных из S3 в инструкцию питона следующего: http://boto.cloudhackers.com/en/latest/s3_tut.htmlИмпорта отдельные файлы из вложенной папки S3 в Python

Следующий код позволяет мне импортировать все файлы в основной папке в питон, но заменяя гр .get_bucket ('mainfolder/subfolder') не работает. Кто-нибудь знает, как я могу получить доступ к подпапке и импортировать ее содержимое?

import boto 
c = boto.connect_s3() 
b = c.get_bucket('mainfolder') 
+0

для просмотра вложенных папок используйте «result_set = bckt_obj.list (s3_path, delimiter = '/')», который будет возвращать объект набора результатов, тогда вы можете повторить этот набор результатов, чтобы получить подпапки. –

ответ

1

get_bucket Способ по соединению возвращает объект Bucket. Чтобы получить доступ к отдельным файлам или каталогам в этом ведре, вам необходимо создать объект Key с файловым путем или использовать Bucket.list_keys с папкой, чтобы получить все ключи для файлов по этому пути. Каждый объект Key выступает в качестве дескриптора для сохраненного файла. Затем вы вызываете функции на клавишах для управления хранящимися файлами. Например:

import boto 

connection = boto.connect_s3() 
bucket = connection.get_bucket('myBucketName') 

fileKey = bucket.get_key('myFileName.txt') 
print fileKey.get_contents_as_string() 

for key in bucket.list('myFolderName'): 
    print key.get_contents_as_string() 

пример здесь просто выводит содержимое каждого файла (который, вероятно, плохая идея!). В зависимости от того, что вы хотите делать с файлами, вы можете загрузить их во временный каталог или прочитать их в переменной и т. Д. См. http://boto.cloudhackers.com/en/latest/ref/s3.html#module-boto.s3.key для документации о том, что можно сделать с помощью клавиш.

+0

спасибо, что это работает! – pemfir