diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2010-08-17 21:10:05 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2010-08-17 21:10:05 (GMT) |
commit | 79c5ef11d56e761445e334a7121764808e9e70cf (patch) | |
tree | 529b00a3e891a4c14b4c5e1ac6971f490ba62784 /Lib/gzip.py | |
parent | 852823d731a6370c078016f3825044eec74fbb4f (diff) | |
download | cpython-79c5ef11d56e761445e334a7121764808e9e70cf.zip cpython-79c5ef11d56e761445e334a7121764808e9e70cf.tar.gz cpython-79c5ef11d56e761445e334a7121764808e9e70cf.tar.bz2 |
Issue #3488: Provide convenient shorthand functions `gzip.compress`
and `gzip.decompress`. Original patch by Anand B. Pillai.
Diffstat (limited to 'Lib/gzip.py')
-rw-r--r-- | Lib/gzip.py | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/Lib/gzip.py b/Lib/gzip.py index fab55a3..83311cc 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -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 |