[英]download a .gz file from a subdirectory in a s3 bucket using boto
我有一個名為combin.gz的文件,需要從s3的子文件夾中下載。 我能夠訪問combin.gz文件(特別是每個目錄一個),但是我無法在boto中找到一種方法來將.gz文件讀取到本地計算機。
我所能找到的只是boto.utils.fetch_file
, key.get_contents_to_filename
, key.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.