好的,我有一个包含gz文件的zip文件(unix gzip)。
def parseSTS(file):
import zipfile, re, io, gzip
with zipfile.ZipFile(file, 'r') as zfile:
for name in zfile.namelist():
if re.search(r'\.gz$', name) != None:
zfiledata = zfile.open(name)
print("start for file ", name)
with gzip.open(zfiledata,'r') as gzfile:
print("done opening")
filecontent = gzfile.read()
print("done reading")
print(filecontent)
>>>
start for file XXXXXX.gz
done opening
done reading
如何使用FileContent
?
编辑:这不是一个重复,因为我的gzipped文件在一个zipped文件中,我试图避免将该zip文件解压缩到磁盘上。它与zip文件中的zip文件一起工作,就像如何在Python中从zip文件中读取zip文件一样?.
我创建了一个zip文件,其中包含一个从Web上抓取的gzip PDF文件。
我运行了以下代码(有两个小改动):
1)修正了def语句下所有内容的缩进(我在你的问题中也纠正了这一点,因为我确信它是正确的,否则它不会解决你的问题)。
zfiledata = zfile.open(name)
print("start for file ", name)
with gzip.open(zfiledata,'r') as gzfile:
print("done opening")
filecontent = gzfile.read()
print("done reading")
print(filecontent)
print("start for file ", name)
with gzip.open(name,'rb') as gzfile:
print("done opening")
filecontent = gzfile.read()
print("done reading")
print(filecontent)
编辑:从James R的回答中添加到GZIP文档的链接--
另外,请参见此处以获得更多文档:
http://docs.python.org/2/library/gzip.html#用法示例
我还建议阅读这篇文章,以便更深入地了解我所期望的您的问题:为什么打印到stdout的速度如此之慢?能加快速度吗?
EDIT 2-如果您的系统不处理zip文件上的文件io,不会导致上述文件错误,则可选择:
def parseSTS(afile):
import zipfile
import zlib
import gzip
import io
with zipfile.ZipFile(afile, 'r') as archive:
for name in archive.namelist():
if name.endswith('.gz'):
bfn = archive.read(name)
bfi = io.BytesIO(bfn)
g = gzip.GzipFile(fileobj=bfi,mode='rb')
qqq = g.read()
print qqq
parseSTS('t.zip')
问题内容: 我想使用urllib下载文件,并在保存之前对文件进行解压缩。 这就是我现在所拥有的: 最终将写入空文件。我该如何实现自己的追求? 更新的答案: 问题答案: 在写完之后,但要传递给之前,您需要寻找到开始的地方。否则它将被模块从头读取,并显示为空文件。见下文:
问题内容: 我是Go的新手,无法弄清楚如何使用该软件包对我有利。基本上,我只想写一些东西到文件中,将其gzip压缩,然后通过另一个脚本直接从压缩格式读取。如果有人可以给我一个有关如何执行此操作的示例,我将不胜感激。 问题答案: 所有压缩包都实现相同的接口。您将使用以下方式进行压缩: 并解压缩:
写压缩文件 # gzip_write.py import gzip import io import os outfilename = 'example.txt.gz' with gzip.open(outfilename, 'wb') as output: with io.TextIOWrapper(output, encoding='utf-8') as enc: e
问题内容: 我想执行一个命令,让该命令的输出即时得到gzip’d,并且回显/准备该命令的输出。 即,类似: 除了执行该行时,我希望在标准输出中看到此内容: 问题答案: 正如评论中指出的那样,在某些情况下可能会更好。
Gzip 中间件 Gzip 中间件使用 gzip 压缩方案来对HTTP响应进行压缩。 使用 e.Use(middleware.Gzip()) 自定义配置 使用 e := echo.New() e.Use(middleware.GzipWithConfig(middleware.GzipConfig{ Level: 5, })) 配置 GzipConfig struct { // Skipp
问题内容: 我正在使用php的功能来执行HTTP请求。为了节省带宽,我决定使用添加标题。 显然,输出一个gzip编码的字符串,所以我用来解码该编码的字符串,但是将作为参数传递的数据出错。 我知道还有另一个功能可以解压缩压缩后的数据,但是它不包含在我的PHP版本中(也许仅在SVN上可用)。 我知道cUrl可以即时解码gzip流(没有任何问题),但是有人建议我使用它而不是cUrl。 您是否知道以其他方