2007-08-15 11:28:22 -03:00
|
|
|
:mod:`gzip` --- Support for :program:`gzip` files
|
|
|
|
=================================================
|
|
|
|
|
|
|
|
.. module:: gzip
|
|
|
|
:synopsis: Interfaces for gzip compression and decompression using file objects.
|
|
|
|
|
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61981 | amaury.forgeotdarc | 2008-03-28 01:21:34 +0100 (Fri, 28 Mar 2008) | 2 lines
test_future3.py is a regular test file, and should be part of the test suite
........
r61984 | jeffrey.yasskin | 2008-03-28 05:11:18 +0100 (Fri, 28 Mar 2008) | 6 lines
Kill a race in test_threading in which the exception info in a thread finishing
up after it was joined had a traceback pointing to that thread's (deleted)
target attribute, while the test was trying to check that the target was
destroyed. Big thanks to Antoine Pitrou for diagnosing the race and pointing
out sys.exc_clear() to kill the exception early. This fixes issue 2496.
........
r61985 | neal.norwitz | 2008-03-28 05:41:34 +0100 (Fri, 28 Mar 2008) | 1 line
Allow use of other ports so the test can pass if 9091 is in use
........
r61986 | jeffrey.yasskin | 2008-03-28 05:53:10 +0100 (Fri, 28 Mar 2008) | 2 lines
Print more information the next time test_socket throws the wrong exception.
........
r61987 | neal.norwitz | 2008-03-28 05:58:51 +0100 (Fri, 28 Mar 2008) | 5 lines
Revert r61969 which added casts to Py_CHARMASK to avoid compiler warnings.
Rather than sprinkle casts throughout the code, change Py_CHARMASK to
always cast it's result to an unsigned char. This should ensure we
do the right thing when accessing an array with the result.
........
r61992 | neal.norwitz | 2008-03-28 06:34:59 +0100 (Fri, 28 Mar 2008) | 2 lines
Fix compiler warning about finite() missing on Solaris.
........
r61993 | neal.norwitz | 2008-03-28 07:34:03 +0100 (Fri, 28 Mar 2008) | 11 lines
Bug 1503: Get the test to pass on OSX. This should make the test more
reliable, but I'm not convinced it is the right solution. We need
to determine if this causes the test to hang on any platforms or do
other bad things.
Even if it gets the test to pass reliably, it might be that we want
to fix this in socket. The socket returned from accept() is different
on different platforms (inheriting attributes or not) and we might
want to ensure that the attributes (at least blocking) is the same
across all platforms.
........
r61997 | neal.norwitz | 2008-03-28 08:36:31 +0100 (Fri, 28 Mar 2008) | 1 line
Name the main method correctly so the test is run
........
r61998 | gregory.p.smith | 2008-03-28 09:00:44 +0100 (Fri, 28 Mar 2008) | 7 lines
This patch moves some tests from test_urllib2_net to test_urllib2_localnet.
The moved tests use a local server rather than going out to external servers.
Accepts patch from issue2429.
Contributed by Jerry Seutter & Michael Foord (fuzzyman) at PyCon 2008.
........
r61999 | georg.brandl | 2008-03-28 09:06:56 +0100 (Fri, 28 Mar 2008) | 2 lines
#2406: add examples to gzip docs.
........
r62000 | gregory.p.smith | 2008-03-28 09:32:09 +0100 (Fri, 28 Mar 2008) | 4 lines
Accept patch issue2426 by Paul Kippes (kippesp).
Adds sqlite3.Connection.iterdump to allow dumping of databases.
........
2008-03-28 07:53:29 -03:00
|
|
|
This module provides a simple interface to compress and decompress files just
|
|
|
|
like the GNU programs :program:`gzip` and :program:`gunzip` would.
|
|
|
|
|
|
|
|
The data compression is provided by the :mod:``zlib`` module.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61981 | amaury.forgeotdarc | 2008-03-28 01:21:34 +0100 (Fri, 28 Mar 2008) | 2 lines
test_future3.py is a regular test file, and should be part of the test suite
........
r61984 | jeffrey.yasskin | 2008-03-28 05:11:18 +0100 (Fri, 28 Mar 2008) | 6 lines
Kill a race in test_threading in which the exception info in a thread finishing
up after it was joined had a traceback pointing to that thread's (deleted)
target attribute, while the test was trying to check that the target was
destroyed. Big thanks to Antoine Pitrou for diagnosing the race and pointing
out sys.exc_clear() to kill the exception early. This fixes issue 2496.
........
r61985 | neal.norwitz | 2008-03-28 05:41:34 +0100 (Fri, 28 Mar 2008) | 1 line
Allow use of other ports so the test can pass if 9091 is in use
........
r61986 | jeffrey.yasskin | 2008-03-28 05:53:10 +0100 (Fri, 28 Mar 2008) | 2 lines
Print more information the next time test_socket throws the wrong exception.
........
r61987 | neal.norwitz | 2008-03-28 05:58:51 +0100 (Fri, 28 Mar 2008) | 5 lines
Revert r61969 which added casts to Py_CHARMASK to avoid compiler warnings.
Rather than sprinkle casts throughout the code, change Py_CHARMASK to
always cast it's result to an unsigned char. This should ensure we
do the right thing when accessing an array with the result.
........
r61992 | neal.norwitz | 2008-03-28 06:34:59 +0100 (Fri, 28 Mar 2008) | 2 lines
Fix compiler warning about finite() missing on Solaris.
........
r61993 | neal.norwitz | 2008-03-28 07:34:03 +0100 (Fri, 28 Mar 2008) | 11 lines
Bug 1503: Get the test to pass on OSX. This should make the test more
reliable, but I'm not convinced it is the right solution. We need
to determine if this causes the test to hang on any platforms or do
other bad things.
Even if it gets the test to pass reliably, it might be that we want
to fix this in socket. The socket returned from accept() is different
on different platforms (inheriting attributes or not) and we might
want to ensure that the attributes (at least blocking) is the same
across all platforms.
........
r61997 | neal.norwitz | 2008-03-28 08:36:31 +0100 (Fri, 28 Mar 2008) | 1 line
Name the main method correctly so the test is run
........
r61998 | gregory.p.smith | 2008-03-28 09:00:44 +0100 (Fri, 28 Mar 2008) | 7 lines
This patch moves some tests from test_urllib2_net to test_urllib2_localnet.
The moved tests use a local server rather than going out to external servers.
Accepts patch from issue2429.
Contributed by Jerry Seutter & Michael Foord (fuzzyman) at PyCon 2008.
........
r61999 | georg.brandl | 2008-03-28 09:06:56 +0100 (Fri, 28 Mar 2008) | 2 lines
#2406: add examples to gzip docs.
........
r62000 | gregory.p.smith | 2008-03-28 09:32:09 +0100 (Fri, 28 Mar 2008) | 4 lines
Accept patch issue2426 by Paul Kippes (kippesp).
Adds sqlite3.Connection.iterdump to allow dumping of databases.
........
2008-03-28 07:53:29 -03:00
|
|
|
The :mod:`gzip` module provides the :class:`GzipFile` class which is modeled
|
|
|
|
after Python's File Object. The :class:`GzipFile` class reads and writes
|
2007-08-15 11:28:22 -03:00
|
|
|
:program:`gzip`\ -format files, automatically compressing or decompressing the
|
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61981 | amaury.forgeotdarc | 2008-03-28 01:21:34 +0100 (Fri, 28 Mar 2008) | 2 lines
test_future3.py is a regular test file, and should be part of the test suite
........
r61984 | jeffrey.yasskin | 2008-03-28 05:11:18 +0100 (Fri, 28 Mar 2008) | 6 lines
Kill a race in test_threading in which the exception info in a thread finishing
up after it was joined had a traceback pointing to that thread's (deleted)
target attribute, while the test was trying to check that the target was
destroyed. Big thanks to Antoine Pitrou for diagnosing the race and pointing
out sys.exc_clear() to kill the exception early. This fixes issue 2496.
........
r61985 | neal.norwitz | 2008-03-28 05:41:34 +0100 (Fri, 28 Mar 2008) | 1 line
Allow use of other ports so the test can pass if 9091 is in use
........
r61986 | jeffrey.yasskin | 2008-03-28 05:53:10 +0100 (Fri, 28 Mar 2008) | 2 lines
Print more information the next time test_socket throws the wrong exception.
........
r61987 | neal.norwitz | 2008-03-28 05:58:51 +0100 (Fri, 28 Mar 2008) | 5 lines
Revert r61969 which added casts to Py_CHARMASK to avoid compiler warnings.
Rather than sprinkle casts throughout the code, change Py_CHARMASK to
always cast it's result to an unsigned char. This should ensure we
do the right thing when accessing an array with the result.
........
r61992 | neal.norwitz | 2008-03-28 06:34:59 +0100 (Fri, 28 Mar 2008) | 2 lines
Fix compiler warning about finite() missing on Solaris.
........
r61993 | neal.norwitz | 2008-03-28 07:34:03 +0100 (Fri, 28 Mar 2008) | 11 lines
Bug 1503: Get the test to pass on OSX. This should make the test more
reliable, but I'm not convinced it is the right solution. We need
to determine if this causes the test to hang on any platforms or do
other bad things.
Even if it gets the test to pass reliably, it might be that we want
to fix this in socket. The socket returned from accept() is different
on different platforms (inheriting attributes or not) and we might
want to ensure that the attributes (at least blocking) is the same
across all platforms.
........
r61997 | neal.norwitz | 2008-03-28 08:36:31 +0100 (Fri, 28 Mar 2008) | 1 line
Name the main method correctly so the test is run
........
r61998 | gregory.p.smith | 2008-03-28 09:00:44 +0100 (Fri, 28 Mar 2008) | 7 lines
This patch moves some tests from test_urllib2_net to test_urllib2_localnet.
The moved tests use a local server rather than going out to external servers.
Accepts patch from issue2429.
Contributed by Jerry Seutter & Michael Foord (fuzzyman) at PyCon 2008.
........
r61999 | georg.brandl | 2008-03-28 09:06:56 +0100 (Fri, 28 Mar 2008) | 2 lines
#2406: add examples to gzip docs.
........
r62000 | gregory.p.smith | 2008-03-28 09:32:09 +0100 (Fri, 28 Mar 2008) | 4 lines
Accept patch issue2426 by Paul Kippes (kippesp).
Adds sqlite3.Connection.iterdump to allow dumping of databases.
........
2008-03-28 07:53:29 -03:00
|
|
|
data so that it looks like an ordinary file object.
|
|
|
|
|
|
|
|
Note that additional file formats which can be decompressed by the
|
|
|
|
:program:`gzip` and :program:`gunzip` programs, such as those produced by
|
|
|
|
:program:`compress` and :program:`pack`, are not supported by this module.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
Merged revisions 58817-58861 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r58822 | brett.cannon | 2007-11-02 23:47:02 -0700 (Fri, 02 Nov 2007) | 2 lines
Add a missing quotation mark.
........
r58840 | skip.montanaro | 2007-11-04 07:56:52 -0800 (Sun, 04 Nov 2007) | 2 lines
Note change to get_dialect semantics in 2.5. Will backport to 2.5.
........
r58844 | georg.brandl | 2007-11-04 09:43:49 -0800 (Sun, 04 Nov 2007) | 2 lines
Fix syntax for versionchanged markup.
........
r58850 | gregory.p.smith | 2007-11-04 18:32:26 -0800 (Sun, 04 Nov 2007) | 9 lines
Fixes bug 477182 on pybsddb.sf.net. DB objects now load the flags and
pay attention to them when opening an existing database. This means
that d[] behaves properly even on databases previously created with DB_DUP
or DB_DUPSORT flags to allow duplicate keys.
http://sourceforge.net/tracker/index.php?func=detail&aid=477182&group_id=13900&atid=113900
Do not backport, this bugfix could be considered an API change.
........
r58851 | gregory.p.smith | 2007-11-04 18:56:31 -0800 (Sun, 04 Nov 2007) | 3 lines
Add the bsddb.db.DBEnv.lock_id_free method.
Improve test_lock's tempdir creation and cleanup.
........
r58852 | gregory.p.smith | 2007-11-05 01:06:28 -0800 (Mon, 05 Nov 2007) | 3 lines
* db->get_types is only available in BerkeleyDB >= 4.2
* get compiling with older versions of python again for a stand alone release.
........
r58853 | gregory.p.smith | 2007-11-05 01:07:40 -0800 (Mon, 05 Nov 2007) | 2 lines
* db->get_flags is only available in BerkeleyDB >= 4.2
........
r58854 | mark.summerfield | 2007-11-05 01:22:48 -0800 (Mon, 05 Nov 2007) | 3 lines
Added cross-references between the various archive file formats.
........
r58857 | mark.summerfield | 2007-11-05 06:38:50 -0800 (Mon, 05 Nov 2007) | 5 lines
Clarified the fact that you can have comments for individual archive
members even though comments to the archive itself aren't currently
supported.
........
2007-11-05 15:43:04 -04:00
|
|
|
For other archive formats, see the :mod:`bz2`, :mod:`zipfile`, and
|
|
|
|
:mod:`tarfile` modules.
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
The module defines the following items:
|
|
|
|
|
|
|
|
|
|
|
|
.. class:: GzipFile([filename[, mode[, compresslevel[, fileobj]]]])
|
|
|
|
|
|
|
|
Constructor for the :class:`GzipFile` class, which simulates most of the methods
|
|
|
|
of a file object, with the exception of the :meth:`readinto` and
|
|
|
|
:meth:`truncate` methods. At least one of *fileobj* and *filename* must be
|
|
|
|
given a non-trivial value.
|
|
|
|
|
|
|
|
The new class instance is based on *fileobj*, which can be a regular file, a
|
|
|
|
:class:`StringIO` object, or any other object which simulates a file. It
|
|
|
|
defaults to ``None``, in which case *filename* is opened to provide a file
|
|
|
|
object.
|
|
|
|
|
|
|
|
When *fileobj* is not ``None``, the *filename* argument is only used to be
|
|
|
|
included in the :program:`gzip` file header, which may includes the original
|
|
|
|
filename of the uncompressed file. It defaults to the filename of *fileobj*, if
|
|
|
|
discernible; otherwise, it defaults to the empty string, and in this case the
|
|
|
|
original filename is not included in the header.
|
|
|
|
|
|
|
|
The *mode* argument can be any of ``'r'``, ``'rb'``, ``'a'``, ``'ab'``, ``'w'``,
|
|
|
|
or ``'wb'``, depending on whether the file will be read or written. The default
|
|
|
|
is the mode of *fileobj* if discernible; otherwise, the default is ``'rb'``. If
|
|
|
|
not given, the 'b' flag will be added to the mode to ensure the file is opened
|
|
|
|
in binary mode for cross-platform portability.
|
|
|
|
|
|
|
|
The *compresslevel* argument is an integer from ``1`` to ``9`` controlling the
|
|
|
|
level of compression; ``1`` is fastest and produces the least compression, and
|
|
|
|
``9`` is slowest and produces the most compression. The default is ``9``.
|
|
|
|
|
|
|
|
Calling a :class:`GzipFile` object's :meth:`close` method does not close
|
|
|
|
*fileobj*, since you might wish to append more material after the compressed
|
|
|
|
data. This also allows you to pass a :class:`StringIO` object opened for
|
|
|
|
writing as *fileobj*, and retrieve the resulting memory buffer using the
|
|
|
|
:class:`StringIO` object's :meth:`getvalue` method.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: open(filename[, mode[, compresslevel]])
|
|
|
|
|
|
|
|
This is a shorthand for ``GzipFile(filename,`` ``mode,`` ``compresslevel)``.
|
|
|
|
The *filename* argument is required; *mode* defaults to ``'rb'`` and
|
|
|
|
*compresslevel* defaults to ``9``.
|
|
|
|
|
|
|
|
|
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61981 | amaury.forgeotdarc | 2008-03-28 01:21:34 +0100 (Fri, 28 Mar 2008) | 2 lines
test_future3.py is a regular test file, and should be part of the test suite
........
r61984 | jeffrey.yasskin | 2008-03-28 05:11:18 +0100 (Fri, 28 Mar 2008) | 6 lines
Kill a race in test_threading in which the exception info in a thread finishing
up after it was joined had a traceback pointing to that thread's (deleted)
target attribute, while the test was trying to check that the target was
destroyed. Big thanks to Antoine Pitrou for diagnosing the race and pointing
out sys.exc_clear() to kill the exception early. This fixes issue 2496.
........
r61985 | neal.norwitz | 2008-03-28 05:41:34 +0100 (Fri, 28 Mar 2008) | 1 line
Allow use of other ports so the test can pass if 9091 is in use
........
r61986 | jeffrey.yasskin | 2008-03-28 05:53:10 +0100 (Fri, 28 Mar 2008) | 2 lines
Print more information the next time test_socket throws the wrong exception.
........
r61987 | neal.norwitz | 2008-03-28 05:58:51 +0100 (Fri, 28 Mar 2008) | 5 lines
Revert r61969 which added casts to Py_CHARMASK to avoid compiler warnings.
Rather than sprinkle casts throughout the code, change Py_CHARMASK to
always cast it's result to an unsigned char. This should ensure we
do the right thing when accessing an array with the result.
........
r61992 | neal.norwitz | 2008-03-28 06:34:59 +0100 (Fri, 28 Mar 2008) | 2 lines
Fix compiler warning about finite() missing on Solaris.
........
r61993 | neal.norwitz | 2008-03-28 07:34:03 +0100 (Fri, 28 Mar 2008) | 11 lines
Bug 1503: Get the test to pass on OSX. This should make the test more
reliable, but I'm not convinced it is the right solution. We need
to determine if this causes the test to hang on any platforms or do
other bad things.
Even if it gets the test to pass reliably, it might be that we want
to fix this in socket. The socket returned from accept() is different
on different platforms (inheriting attributes or not) and we might
want to ensure that the attributes (at least blocking) is the same
across all platforms.
........
r61997 | neal.norwitz | 2008-03-28 08:36:31 +0100 (Fri, 28 Mar 2008) | 1 line
Name the main method correctly so the test is run
........
r61998 | gregory.p.smith | 2008-03-28 09:00:44 +0100 (Fri, 28 Mar 2008) | 7 lines
This patch moves some tests from test_urllib2_net to test_urllib2_localnet.
The moved tests use a local server rather than going out to external servers.
Accepts patch from issue2429.
Contributed by Jerry Seutter & Michael Foord (fuzzyman) at PyCon 2008.
........
r61999 | georg.brandl | 2008-03-28 09:06:56 +0100 (Fri, 28 Mar 2008) | 2 lines
#2406: add examples to gzip docs.
........
r62000 | gregory.p.smith | 2008-03-28 09:32:09 +0100 (Fri, 28 Mar 2008) | 4 lines
Accept patch issue2426 by Paul Kippes (kippesp).
Adds sqlite3.Connection.iterdump to allow dumping of databases.
........
2008-03-28 07:53:29 -03:00
|
|
|
.. _gzip-usage-examples:
|
|
|
|
|
|
|
|
Examples of usage
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
Example of how to read a compressed file::
|
|
|
|
|
|
|
|
import gzip
|
|
|
|
f = gzip.open('/home/joe/file.txt.gz', 'rb')
|
|
|
|
file_content = f.read()
|
|
|
|
f.close()
|
|
|
|
|
|
|
|
Example of how to create a compressed GZIP file::
|
|
|
|
|
|
|
|
import gzip
|
|
|
|
content = "Lots of content here"
|
|
|
|
f = gzip.open('/home/joe/file.txt.gz', 'wb')
|
|
|
|
f.write(content)
|
|
|
|
f.close()
|
|
|
|
|
|
|
|
Example of how to GZIP compress an existing file::
|
|
|
|
|
|
|
|
import gzip
|
|
|
|
f_in = open('/home/joe/file.txt', 'rb')
|
|
|
|
f_out = gzip.open('/home/joe/file.txt.gz', 'wb')
|
|
|
|
f_out.writelines(f_in)
|
|
|
|
f_out.close()
|
|
|
|
f_in.close()
|
|
|
|
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
.. seealso::
|
|
|
|
|
|
|
|
Module :mod:`zlib`
|
|
|
|
The basic data compression module needed to support the :program:`gzip` file
|
|
|
|
format.
|
|
|
|
|