繁体   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