2017-01-26 1 views
0

bucket.list() 메소드는 파일 이름이나 크기와 같은 파일 정보뿐만 아니라 파일의 전체 데이터를 가져 옵니까?파이썬에서 boto 모듈의 bucket.list()에 대해

data/hello/에서 1,000,000 바이트 세 개의 파일이 있습니다

data/hello/0001.txt (1,000,000 bytes) 
data/hello/0002.txt (1,000,000 bytes) 
data/hello/0003.txt (1,000,000 bytes) 

나는 내 코드 (아래) 실행.

결과 크기는이 날이 파일의 전체 데이터를 제공하고 더 많은 트래픽을 생성하는 생각하게 3000000.

입니다. 내가 맞습니까?

conn = boto.connect_s3() 
bucket = conn.get_bucket('my_bucket') 
object_list = bucket.list(prefix='data/hello/') 

data_size = 0 
for object in object_list: 

    for data in object: 
     if type(data) is str: 
      data_size += len(data) 

print('size: %d'%data_size) 

답변

0

아니요, bucket.list은 모든 개체의 내용을 가져 오지 않습니다. bucket.list에 의해 반환 된 keys 각각을 반복 할 때, boto는 개체의 내용을 가져 오기 위해 별도의 호출을하고 있습니다 (아마도 생성기를 사용하여).

즉 그것은 당신의 루프의 모든 반복에있는 콘텐츠를 가져 오는 것 :

for data in object: 
    # data is fetched right before here 
    if type(data) is str: 
+0

감사합니다! 한가지 더 질문 해주세요 ^^ 반복에 들어가기 전에 연결 ** conn.close() **를 닫았습니다. 나는 그것이 전체 내용을받을 수 없다고 기대했다. 연결이 닫혀 있기 때문입니다. 연결을 닫았지만받을 수있었습니다. 그것은 연결을 닫는 것과 관련이 있지 않습니까? – Kim