Issue #3488: Provide convenient shorthand functions gzip.compress

and `gzip.decompress`.  Original patch by Anand B. Pillai.
This commit is contained in:
Antoine Pitrou 2010-08-17 21:10:05 +00:00
parent 852823d731
commit 79c5ef11d5
5 changed files with 58 additions and 1 deletions

View file

@ -10,7 +10,7 @@ import zlib
import builtins
import io
__all__ = ["GzipFile","open"]
__all__ = ["GzipFile", "open", "compress", "decompress"]
FTEXT, FHCRC, FEXTRA, FNAME, FCOMMENT = 1, 2, 4, 8, 16
@ -476,6 +476,23 @@ class GzipFile(io.BufferedIOBase):
return b''.join(bufs) # Return resulting line
def compress(data, compresslevel=9):
"""Compress data in one shot and return the compressed string.
Optional argument is the compression level, in range of 1-9.
"""
buf = io.BytesIO()
with GzipFile(fileobj=buf, mode='wb', compresslevel=compresslevel) as f:
f.write(data)
return buf.getvalue()
def decompress(data):
"""Decompress a gzip compressed string in one shot.
Return the decompressed string.
"""
with GzipFile(fileobj=io.BytesIO(data)) as f:
return f.read()
def _test():
# Act like gzip; with -d, act like gunzip.
# The input file is not deleted, however, nor are any other gzip