summaryrefslogtreecommitdiffstats
path: root/Lib/gzip.py
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2010-08-17 21:10:05 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2010-08-17 21:10:05 (GMT)
commit79c5ef11d56e761445e334a7121764808e9e70cf (patch)
tree529b00a3e891a4c14b4c5e1ac6971f490ba62784 /Lib/gzip.py
parent852823d731a6370c078016f3825044eec74fbb4f (diff)
downloadcpython-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.py19
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