在内存中下载并解压缩gzipped文件?

9 浏览
0 Comments

在内存中下载并解压缩gzipped文件?

我想使用urllib下载一个文件,并在保存之前在内存中解压缩该文件。

目前我有以下代码:

import urllib2
import StringIO
import gzip
response = urllib2.urlopen(baseURL + filename)
compressedFile = StringIO.StringIO()
compressedFile.write(response.read())
decompressedFile = gzip.GzipFile(fileobj=compressedFile, mode='rb')
outfile = open(outFilePath, 'w')
outfile.write(decompressedFile.read())

但是最终写入的文件是空的。我该如何实现我想要的效果?

更新后的答案:

#! /usr/bin/env python2
import urllib2
import StringIO
import gzip
baseURL = "https://www.kernel.org/pub/linux/docs/man-pages/"        
# 检查文件名:由于新的更新,文件名可能会变化
filename = "man-pages-5.00.tar.gz" 
outFilePath = filename[:-3]
response = urllib2.urlopen(baseURL + filename)
compressedFile = StringIO.StringIO(response.read())
decompressedFile = gzip.GzipFile(fileobj=compressedFile)
with open(outFilePath, 'w') as outfile:
    outfile.write(decompressedFile.read())

0