簡體   English   中英

使用Boto從s3存儲桶中的子目錄下載.gz文件

[英]download a .gz file from a subdirectory in a s3 bucket using boto

我有一個名為combin.gz的文件,需要從s3的子文件夾中下載。 我能夠訪問combin.gz文件(特別是每個目錄一個),但是我無法在boto中找到一種方法來將.gz文件讀取到本地計算機。

我所能找到的只是boto.utils.fetch_filekey.get_contents_to_filenamekey.get_contents_to_file方法,據我所知,所有這些方法都直接流傳輸文件的內容。

有沒有辦法讓我首先使用Boto從S3將.gz格式的壓縮文件讀取到本地計算機上,然后將其解壓縮?

任何幫助將非常感激。

您可以將完整內容作為字符串讀取,然后將其作為字符串對象進行管理。 這是非常危險的,可能導致內存或緩沖區問題,因此請小心。

使用cStringIO.StringIO,gzip.GzipFile和boto進行簽入

datastring = key.get_contents_as_string()
data = cStringIO.StringIO(datastring)
rawdata = gzip.GzipFile(fileobj=data).read()

再次-請小心,因為如果gzip文件格式錯誤,這會存在大量內存和潛在的安全問題。 如果您不控制雙方,那么除了try和防御性代碼外,您都希望嘗試一下。

暫無
暫無

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

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