簡體   English   中英

使用Boto3從S3進行多部分獲取

[英]Multipart get from s3 with boto3

我將大型zip文件存儲在s3存儲桶中,因此我想使用python boto3庫按塊下載它們。

我首先嘗試使用object.download_fileobj方法,但是無法只獲取對象的一部分,因此現在使用支持PartNumber=X參數的s3.get方法。

但是,在開始獲取零件之前,我無法找到零件的數量。 我的意思是,如果我在參數中未指定部件號的情況下調用get,則會得到以下響應:

s3.Object('mybucket', 'mytest.zip').get()

{'ETag':'“ 493458a23b7d2ed524e8f144aa9e91f4-27”','LastModified':datetime.datetime(2017,2,23,9,53,48,tzinfo = tzutc()),'ResponseMetadata':{'RetryAttempts':0 ,'RequestId':'E67ABBE9682AE0CA','HTTPHeaders':{'accept-ranges':'bytes','x-amz-id-2':'Kymvd3rkQZFkjOdnNvbh1f0OG2zFzwJQEai ++ kvfnZSNtQ2cSJQ7xT ,2017年2月23日10:55:02 GMT”,“最后修改”:“星期四,2017年2月23日09:53:48 GMT”,“服務器”:“ AmazonS3”,“內容類型”:“應用程序/ zip ' 'X-AMZ-請求-ID': 'E67ABBE9682AE0CA', '內容長度': '222492172', 'ETAG': ' “493458a23b7d2ed524e8f144aa9e91f4-27”'}, 'HOSTID':' Kymvd3rkQZFkjOdnNvbh1f0OG2zFzwJQEai ++ kvfnZSNtQ2cSQ7wmASMZxT17xg / WJJ29xBxyUQ =','HTTPStatusCode':200},'ContentLength':222492172,'ContentType':'application / zip','Body':,'AcceptRanges':'bytes','Metadata':{}}

我們可以看到這里沒有PartCount

如果我也這樣做,但PartNumber=1

 s3.Object('mybucket', 'mytest.zip').get(PartNumber=1)

{'ETag':'“ 493458a23b7d2ed524e8f144aa9e91f4-27”','LastModified':datetime.datetime(2017,2,23,9,53,48,tzinfo = tzutc()),'PartsCount':27,'ContentRange': '字節0-8388607 / 222492172','ResponseMetadata':{'RetryAttempts':0,'RequestId':'2EE3109196C76834','HTTPHeaders':{'accept-ranges':'bytes','x-amz-id- 2':'Pl4ybedoDA99xCH2fa5zuge9Az7rPxZET + EB2fAZ4BtTDo5dqw / fJZ8PNu3vM5 / 0mTUkj9 / AqhY =','x-amz-mp-parts-count':'27','date':'Thu,2017年2月23日'etag':'“ 493458a23b7d2ed524e8f144aa9e91f4-27”','content-range':'字節0-8388607 / 222492172','content-type':'application / zip','server':'AmazonS3','x- amz-request-id':'2EE3109196C76834','content-length':'8388608','last-modified':'Thu,23 Feb 2017 09:53:48 GMT'},'HostId':'Pl4ybedoDA99xCH2fa5zuge9Az7rPxZET + EB2fAZ4BtTDo5d / fJZ8PNu3vM5 / 0mTUkj9 / AqhY =','HTTPStatusCode':206},'ContentLength':8388608,'ContentType':'application / zip','Body':,'AcceptRanges':'bytes','Metadata':{ }}

我知道可以看到塊的數量

'零件數':27

在我開始下載文件之前,是否可以獲取塊數?

您可以使用head_object獲取該數字。 或者,由於您正在使用對象資源Object.parts_count

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM