summaryrefslogtreecommitdiffstats
path: root/Doc/whatsnew/3.2.rst
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2011-01-27 05:48:56 (GMT)
committerRaymond Hettinger <python@rcn.com>2011-01-27 05:48:56 (GMT)
commit7626ef93b72891d6fb244c86a52fa9eafc239ff3 (patch)
treed0290cb014af547af8fdde2c66428f798f313b4f /Doc/whatsnew/3.2.rst
parenta199368b230026fa37987852fe8802992a126ab7 (diff)
downloadcpython-7626ef93b72891d6fb244c86a52fa9eafc239ff3.zip
cpython-7626ef93b72891d6fb244c86a52fa9eafc239ff3.tar.gz
cpython-7626ef93b72891d6fb244c86a52fa9eafc239ff3.tar.bz2
Add an entry for tarfile.
Diffstat (limited to 'Doc/whatsnew/3.2.rst')
-rw-r--r--Doc/whatsnew/3.2.rst32
1 files changed, 32 insertions, 0 deletions
diff --git a/Doc/whatsnew/3.2.rst b/Doc/whatsnew/3.2.rst
index 50f84ec..a1bdb97 100644
--- a/Doc/whatsnew/3.2.rst
+++ b/Doc/whatsnew/3.2.rst
@@ -1318,6 +1318,38 @@ wrong results.
(Patch submitted by Nir Aides in :issue:`7610`.)
+tarfile
+-------
+
+The :class:`~tarfile.TarFile` class can now be used as a content manager. In
+addition, its :meth:`~tarfile.TarFile.add` method has a new option, *filter*,
+that controls which files are added to the archive and allows the file metadata
+to be edited.
+
+The new *filter* option replaces the older, less flexible *exclude* parameter
+which is now deprecated. If specified, the optional *filter* parameter needs to
+be a :term:`keyword argument`. The user-supplied filter function accepts a
+:class:`~tarfile.TarInfo` object and returns an updated
+:class:`~tarfile.TarInfo` object, or if it wants the file to be excluded, the
+function can return *None*::
+
+ >>> import tarfile, glob
+
+ >>> def myfilter(tarinfo):
+ if tarinfo.isfile(): # only save real files
+ tarinfo.uname = 'monty' # redact the user name
+ return tarinfo
+
+ >>> with tarfile.TarFile(name='myarchive.tar', mode='w') as tf:
+ for filename in glob.glob('*.txt'):
+ tf.add(filename, filter=myfilter)
+ tf.list()
+ -rw-r--r-- monty/501 902 2011-01-26 17:59:11 annotations.txt
+ -rw-r--r-- monty/501 123 2011-01-26 17:59:11 general_questions.txt
+ -rw-r--r-- monty/501 3514 2011-01-26 17:59:11 prion.txt
+ -rw-r--r-- monty/501 124 2011-01-26 17:59:11 py_todo.txt
+ -rw-r--r-- monty/501 1399 2011-01-26 17:59:11 semaphore_notes.txt
+
hashlib
-------