2007-08-15 11:28:22 -03:00
|
|
|
:mod:`shelve` --- Python object persistence
|
|
|
|
===========================================
|
|
|
|
|
|
|
|
.. module:: shelve
|
|
|
|
:synopsis: Python object persistence.
|
|
|
|
|
|
|
|
|
|
|
|
.. index:: module: pickle
|
|
|
|
|
|
|
|
A "shelf" is a persistent, dictionary-like object. The difference with "dbm"
|
|
|
|
databases is that the values (not the keys!) in a shelf can be essentially
|
|
|
|
arbitrary Python objects --- anything that the :mod:`pickle` module can handle.
|
|
|
|
This includes most class instances, recursive data types, and objects containing
|
|
|
|
lots of shared sub-objects. The keys are ordinary strings.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: open(filename[, flag='c'[, protocol=None[, writeback=False]]])
|
|
|
|
|
|
|
|
Open a persistent dictionary. The filename specified is the base filename for
|
|
|
|
the underlying database. As a side-effect, an extension may be added to the
|
|
|
|
filename and more than one file may be created. By default, the underlying
|
|
|
|
database file is opened for reading and writing. The optional *flag* parameter
|
2008-05-26 07:29:35 -03:00
|
|
|
has the same interpretation as the *flag* parameter of :func:`dbm.open`.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2009-02-03 00:19:10 -04:00
|
|
|
By default, version 3 pickles are used to serialize values. The version of the
|
2007-08-15 11:28:22 -03:00
|
|
|
pickle protocol can be specified with the *protocol* parameter.
|
|
|
|
|
2009-05-11 22:40:16 -03:00
|
|
|
Because of Python semantics, a shelf cannot know when a mutable
|
|
|
|
persistent-dictionary entry is modified. By default modified objects are
|
|
|
|
written only when assigned to the shelf (see :ref:`shelve-example`). If
|
|
|
|
the optional *writeback* parameter is set to *True*, all entries accessed
|
|
|
|
are cached in memory, and written back at close time; this can make it
|
|
|
|
handier to mutate mutable entries in the persistent dictionary, but, if
|
|
|
|
many entries are accessed, it can consume vast amounts of memory for the
|
|
|
|
cache, and it can make the close operation very slow since all accessed
|
|
|
|
entries are written back (there is no way to determine which accessed
|
2007-08-15 11:28:22 -03:00
|
|
|
entries are mutable, nor which ones were actually mutated).
|
|
|
|
|
Merged revisions 70768,71657,71721,71729,71794,71976,72036-72037,72079,72085,72131-72134,72191,72197-72198,72219,72221,72225,72303,72434,72467,72476 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r70768 | andrew.kuchling | 2009-03-30 17:29:15 -0500 (Mon, 30 Mar 2009) | 1 line
Typo fixes
........
r71657 | vinay.sajip | 2009-04-16 14:07:37 -0500 (Thu, 16 Apr 2009) | 1 line
Issue #5768: Change to Unicode output logic and test case for same.
........
r71721 | benjamin.peterson | 2009-04-18 14:26:19 -0500 (Sat, 18 Apr 2009) | 1 line
fix a few nits in unittest.py #5771
........
r71729 | benjamin.peterson | 2009-04-18 16:03:10 -0500 (Sat, 18 Apr 2009) | 1 line
move test to a more appropiate one
........
r71794 | vinay.sajip | 2009-04-22 07:10:47 -0500 (Wed, 22 Apr 2009) | 2 lines
Issue #5170: Fixed regression caused when fixing #5768.
........
r71976 | mark.dickinson | 2009-04-26 14:54:55 -0500 (Sun, 26 Apr 2009) | 2 lines
Fix typo in function name
........
r72036 | georg.brandl | 2009-04-27 12:04:23 -0500 (Mon, 27 Apr 2009) | 1 line
#5848: small unittest doc patch.
........
r72037 | georg.brandl | 2009-04-27 12:09:53 -0500 (Mon, 27 Apr 2009) | 1 line
#5840: dont claim we dont support TLS.
........
r72079 | r.david.murray | 2009-04-28 14:02:55 -0500 (Tue, 28 Apr 2009) | 2 lines
Remove spurious 'u'.
........
r72085 | georg.brandl | 2009-04-28 16:48:35 -0500 (Tue, 28 Apr 2009) | 1 line
Make the doctests in the docs pass, except for those in the turtle module.
........
r72131 | benjamin.peterson | 2009-04-29 17:43:35 -0500 (Wed, 29 Apr 2009) | 1 line
fix test_shutil on ZFS #5676
........
r72132 | georg.brandl | 2009-04-29 17:44:07 -0500 (Wed, 29 Apr 2009) | 1 line
#5878: fix repr of re object.
........
r72133 | benjamin.peterson | 2009-04-29 17:44:15 -0500 (Wed, 29 Apr 2009) | 1 line
make sure mode is removable while cleaning up test droppings
........
r72134 | benjamin.peterson | 2009-04-29 19:06:33 -0500 (Wed, 29 Apr 2009) | 1 line
make sure to close file
........
r72191 | michael.foord | 2009-05-02 06:43:06 -0500 (Sat, 02 May 2009) | 9 lines
Adds an exit parameter to unittest.main(). If False main no longer
calls sys.exit.
Closes issue 3379.
Michael Foord
........
r72197 | benjamin.peterson | 2009-05-02 11:24:37 -0500 (Sat, 02 May 2009) | 1 line
don't let sys.argv be used in the tests
........
r72198 | andrew.kuchling | 2009-05-02 12:12:15 -0500 (Sat, 02 May 2009) | 1 line
Add items
........
r72219 | michael.foord | 2009-05-02 15:15:05 -0500 (Sat, 02 May 2009) | 8 lines
Add addCleanup and doCleanups to unittest.TestCase.
Closes issue 5679.
Michael Foord
........
r72221 | benjamin.peterson | 2009-05-02 15:26:53 -0500 (Sat, 02 May 2009) | 1 line
add myself
........
r72225 | michael.foord | 2009-05-02 17:43:34 -0500 (Sat, 02 May 2009) | 1 line
........
r72303 | benjamin.peterson | 2009-05-04 19:55:24 -0500 (Mon, 04 May 2009) | 1 line
using sys._getframe(x), where x > 0 doesnt' work on IronPython
........
r72434 | r.david.murray | 2009-05-07 13:09:58 -0500 (Thu, 07 May 2009) | 2 lines
Pre-opened test file needs to be opened in binary mode.
........
r72467 | georg.brandl | 2009-05-08 07:17:34 -0500 (Fri, 08 May 2009) | 1 line
Fix name.
........
r72476 | thomas.heller | 2009-05-08 15:09:40 -0500 (Fri, 08 May 2009) | 4 lines
Add a file that contains diffs between offical libffi files and the
files in this repository. Should make it easier to merge new libffi
versions.
........
2009-05-08 17:42:26 -03:00
|
|
|
Shelf objects support all methods supported by dictionaries. This eases the
|
2007-08-15 11:28:22 -03:00
|
|
|
transition from dictionary based scripts to those requiring persistent storage.
|
|
|
|
|
|
|
|
One additional method is supported:
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: Shelf.sync()
|
|
|
|
|
|
|
|
Write back all entries in the cache if the shelf was opened with *writeback* set
|
|
|
|
to *True*. Also empty the cache and synchronize the persistent dictionary on
|
|
|
|
disk, if feasible. This is called automatically when the shelf is closed with
|
|
|
|
:meth:`close`.
|
|
|
|
|
2009-04-04 02:39:52 -03:00
|
|
|
.. seealso::
|
|
|
|
|
|
|
|
`Persistent dictionary recipe <http://code.activestate.com/recipes/576642/>`_
|
|
|
|
with widely supported storage formats and having the speed of native
|
|
|
|
dictionaries.
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
Restrictions
|
|
|
|
------------
|
|
|
|
|
|
|
|
.. index::
|
2008-05-26 07:29:35 -03:00
|
|
|
module: dbm.ndbm
|
|
|
|
module: dbm.gnu
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2008-09-07 23:49:30 -03:00
|
|
|
* The choice of which database package will be used (such as :mod:`dbm.ndbm` or
|
|
|
|
:mod:`dbm.gnu`) depends on which interface is available. Therefore it is not
|
|
|
|
safe to open the database directly using :mod:`dbm`. The database is also
|
|
|
|
(unfortunately) subject to the limitations of :mod:`dbm`, if it is used ---
|
2007-08-15 11:28:22 -03:00
|
|
|
this means that (the pickled representation of) the objects stored in the
|
2008-09-07 23:49:30 -03:00
|
|
|
database should be fairly small, and in rare cases key collisions may cause
|
|
|
|
the database to refuse updates.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
* Depending on the implementation, closing a persistent dictionary may or may
|
|
|
|
not be necessary to flush changes to disk. The :meth:`__del__` method of the
|
|
|
|
:class:`Shelf` class calls the :meth:`close` method, so the programmer generally
|
|
|
|
need not do this explicitly.
|
|
|
|
|
|
|
|
* The :mod:`shelve` module does not support *concurrent* read/write access to
|
|
|
|
shelved objects. (Multiple simultaneous read accesses are safe.) When a
|
|
|
|
program has a shelf open for writing, no other program should have it open for
|
|
|
|
reading or writing. Unix file locking can be used to solve this, but this
|
|
|
|
differs across Unix versions and requires knowledge about the database
|
|
|
|
implementation used.
|
|
|
|
|
|
|
|
|
|
|
|
.. class:: Shelf(dict[, protocol=None[, writeback=False]])
|
|
|
|
|
2008-05-26 14:47:11 -03:00
|
|
|
A subclass of :class:`collections.MutableMapping` which stores pickled values
|
|
|
|
in the *dict* object.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
By default, version 0 pickles are used to serialize values. The version of the
|
|
|
|
pickle protocol can be specified with the *protocol* parameter. See the
|
|
|
|
:mod:`pickle` documentation for a discussion of the pickle protocols.
|
|
|
|
|
|
|
|
If the *writeback* parameter is ``True``, the object will hold a cache of all
|
|
|
|
entries accessed and write them back to the *dict* at sync and close times.
|
|
|
|
This allows natural operations on mutable entries, but can consume much more
|
|
|
|
memory and make sync and close take a long time.
|
|
|
|
|
|
|
|
|
|
|
|
.. class:: BsdDbShelf(dict[, protocol=None[, writeback=False]])
|
|
|
|
|
|
|
|
A subclass of :class:`Shelf` which exposes :meth:`first`, :meth:`next`,
|
|
|
|
:meth:`previous`, :meth:`last` and :meth:`set_location` which are available in
|
|
|
|
the :mod:`bsddb` module but not in other database modules. The *dict* object
|
|
|
|
passed to the constructor must support those methods. This is generally
|
|
|
|
accomplished by calling one of :func:`bsddb.hashopen`, :func:`bsddb.btopen` or
|
|
|
|
:func:`bsddb.rnopen`. The optional *protocol* and *writeback* parameters have
|
|
|
|
the same interpretation as for the :class:`Shelf` class.
|
|
|
|
|
|
|
|
|
|
|
|
.. class:: DbfilenameShelf(filename[, flag='c'[, protocol=None[, writeback=False]]])
|
|
|
|
|
|
|
|
A subclass of :class:`Shelf` which accepts a *filename* instead of a dict-like
|
2008-05-26 07:29:35 -03:00
|
|
|
object. The underlying file will be opened using :func:`dbm.open`. By
|
2007-08-15 11:28:22 -03:00
|
|
|
default, the file will be created and opened for both read and write. The
|
|
|
|
optional *flag* parameter has the same interpretation as for the :func:`open`
|
|
|
|
function. The optional *protocol* and *writeback* parameters have the same
|
|
|
|
interpretation as for the :class:`Shelf` class.
|
|
|
|
|
|
|
|
|
2009-05-11 22:40:16 -03:00
|
|
|
.. _shelve-example:
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
Example
|
|
|
|
-------
|
|
|
|
|
|
|
|
To summarize the interface (``key`` is a string, ``data`` is an arbitrary
|
|
|
|
object)::
|
|
|
|
|
|
|
|
import shelve
|
|
|
|
|
|
|
|
d = shelve.open(filename) # open -- file may get suffix added by low-level
|
|
|
|
# library
|
|
|
|
|
|
|
|
d[key] = data # store data at key (overwrites old data if
|
|
|
|
# using an existing key)
|
|
|
|
data = d[key] # retrieve a COPY of data at key (raise KeyError if no
|
|
|
|
# such key)
|
|
|
|
del d[key] # delete data stored at key (raises KeyError
|
|
|
|
# if no such key)
|
2007-09-01 20:34:30 -03:00
|
|
|
flag = key in d # true if the key exists
|
2007-08-15 11:28:22 -03:00
|
|
|
klist = d.keys() # a list of all existing keys (slow!)
|
|
|
|
|
|
|
|
# as d was opened WITHOUT writeback=True, beware:
|
|
|
|
d['xx'] = range(4) # this works as expected, but...
|
Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r70712 | benjamin.peterson | 2009-03-30 10:15:38 -0500 (Mon, 30 Mar 2009) | 1 line
don't rely on the order dict repr #5605
........
r70714 | brett.cannon | 2009-03-30 10:20:53 -0500 (Mon, 30 Mar 2009) | 1 line
Add an entry to developers.txt.
........
r70764 | martin.v.loewis | 2009-03-30 17:06:33 -0500 (Mon, 30 Mar 2009) | 2 lines
Add several VM developers.
........
r70765 | georg.brandl | 2009-03-30 17:09:34 -0500 (Mon, 30 Mar 2009) | 1 line
#5199: make warning about vars() assignment more visible.
........
r70769 | andrew.kuchling | 2009-03-30 17:29:53 -0500 (Mon, 30 Mar 2009) | 1 line
Remove comment
........
r70770 | andrew.kuchling | 2009-03-30 17:30:20 -0500 (Mon, 30 Mar 2009) | 1 line
Add several items and placeholders
........
r70771 | andrew.kuchling | 2009-03-30 17:31:11 -0500 (Mon, 30 Mar 2009) | 1 line
Many edits
........
r70773 | georg.brandl | 2009-03-30 17:43:00 -0500 (Mon, 30 Mar 2009) | 1 line
#5039: make it clear that the impl. note refers to CPython.
........
r70776 | andrew.kuchling | 2009-03-30 18:08:24 -0500 (Mon, 30 Mar 2009) | 1 line
typo fix
........
r70777 | andrew.kuchling | 2009-03-30 18:09:46 -0500 (Mon, 30 Mar 2009) | 1 line
Add more items
........
r70788 | andrew.kuchling | 2009-03-30 20:21:01 -0500 (Mon, 30 Mar 2009) | 1 line
Add various items
........
r70789 | georg.brandl | 2009-03-30 20:25:15 -0500 (Mon, 30 Mar 2009) | 1 line
Fix a wrong struct field assignment (docstring as closure).
........
r70824 | georg.brandl | 2009-03-31 10:43:20 -0500 (Tue, 31 Mar 2009) | 1 line
#5519: remove reference to Kodos, which seems dead.
........
r70828 | georg.brandl | 2009-03-31 10:50:16 -0500 (Tue, 31 Mar 2009) | 1 line
#5581: fget argument of abstractproperty is optional as well.
........
r70832 | georg.brandl | 2009-03-31 11:31:11 -0500 (Tue, 31 Mar 2009) | 1 line
#1386675: specify WindowsError as the exception, because it has a winerror attribute that EnvironmentError doesnt have.
........
r70836 | georg.brandl | 2009-03-31 11:50:25 -0500 (Tue, 31 Mar 2009) | 1 line
#5417: replace references to undocumented functions by ones to documented functions.
........
r70842 | georg.brandl | 2009-03-31 12:13:06 -0500 (Tue, 31 Mar 2009) | 1 line
#970783: document PyObject_Generic[GS]etAttr.
........
r70851 | georg.brandl | 2009-03-31 13:26:55 -0500 (Tue, 31 Mar 2009) | 1 line
#837577: note cryptic return value of spawn*e on invalid env dicts.
........
r70855 | georg.brandl | 2009-03-31 13:30:37 -0500 (Tue, 31 Mar 2009) | 1 line
#5245: note that PyRun_SimpleString doesnt return on SystemExit.
........
r70857 | georg.brandl | 2009-03-31 13:33:10 -0500 (Tue, 31 Mar 2009) | 1 line
#5227: note that Py_Main doesnt return on SystemExit.
........
r70866 | georg.brandl | 2009-03-31 14:06:57 -0500 (Tue, 31 Mar 2009) | 1 line
#4882: document named group behavior a bit better.
........
r70867 | georg.brandl | 2009-03-31 14:10:35 -0500 (Tue, 31 Mar 2009) | 1 line
#1096310: document usage of sys.__std*__ a bit better.
........
r70868 | georg.brandl | 2009-03-31 14:12:17 -0500 (Tue, 31 Mar 2009) | 1 line
#5190: export make_option in __all__.
........
r70869 | georg.brandl | 2009-03-31 14:14:42 -0500 (Tue, 31 Mar 2009) | 1 line
Fix-up unwanted change.
........
r70870 | georg.brandl | 2009-03-31 14:26:24 -0500 (Tue, 31 Mar 2009) | 1 line
#4411: document mro() and __mro__. (I hope I got it right.)
........
r70871 | georg.brandl | 2009-03-31 14:30:56 -0500 (Tue, 31 Mar 2009) | 1 line
#5618: fix typo.
........
r70872 | r.david.murray | 2009-03-31 14:31:17 -0500 (Tue, 31 Mar 2009) | 3 lines
Delete out-of-date and little-known README from the test
directory by consensus of devs at pycon sprint.
........
r70883 | georg.brandl | 2009-03-31 15:41:08 -0500 (Tue, 31 Mar 2009) | 1 line
#1674032: return value of flag from Event.wait(). OKed by Guido.
........
r70885 | tarek.ziade | 2009-03-31 15:48:31 -0500 (Tue, 31 Mar 2009) | 1 line
using log.warn for sys.stderr
........
r70893 | georg.brandl | 2009-03-31 15:56:32 -0500 (Tue, 31 Mar 2009) | 1 line
#1530012: move TQS section before raw strings.
........
r70894 | benjamin.peterson | 2009-03-31 16:06:30 -0500 (Tue, 31 Mar 2009) | 1 line
take the usual lock precautions around _active_limbo_lock
........
r70896 | georg.brandl | 2009-03-31 16:15:33 -0500 (Tue, 31 Mar 2009) | 1 line
#5598: document DocFileSuite *args argument.
........
r70897 | benjamin.peterson | 2009-03-31 16:34:42 -0500 (Tue, 31 Mar 2009) | 1 line
fix Thread.ident when it is the main thread or a dummy thread #5632
........
r70903 | georg.brandl | 2009-03-31 16:45:18 -0500 (Tue, 31 Mar 2009) | 1 line
#1676135: remove trailing slashes from --prefix argument.
........
r70905 | georg.brandl | 2009-03-31 17:03:40 -0500 (Tue, 31 Mar 2009) | 1 line
#5563: more documentation for bdist_msi.
........
r70906 | georg.brandl | 2009-03-31 17:11:53 -0500 (Tue, 31 Mar 2009) | 1 line
#1651995: fix _convert_ref for non-ASCII characters.
........
r70907 | georg.brandl | 2009-03-31 17:18:19 -0500 (Tue, 31 Mar 2009) | 1 line
#3427: document correct return type for urlopen().info().
........
r70915 | georg.brandl | 2009-03-31 17:40:16 -0500 (Tue, 31 Mar 2009) | 1 line
#5018: remove confusing paragraph.
........
r70927 | georg.brandl | 2009-03-31 18:01:27 -0500 (Tue, 31 Mar 2009) | 1 line
Dont shout to users.
........
r70933 | georg.brandl | 2009-03-31 19:04:33 -0500 (Tue, 31 Mar 2009) | 2 lines
Issue #5635: Fix running test_sys with tracing enabled.
........
r70951 | georg.brandl | 2009-04-01 09:02:27 -0500 (Wed, 01 Apr 2009) | 1 line
Add Maksim, who worked on several issues at the sprint.
........
r70960 | jesse.noller | 2009-04-01 11:42:19 -0500 (Wed, 01 Apr 2009) | 1 line
Issue 3270: document Listener address restrictions on windows
........
r70962 | brett.cannon | 2009-04-01 12:07:16 -0500 (Wed, 01 Apr 2009) | 2 lines
Ron DuPlain was given commit privileges at PyCon 2009 to work on 3to2.
........
r70963 | georg.brandl | 2009-04-01 12:46:01 -0500 (Wed, 01 Apr 2009) | 1 line
#5655: fix docstring oversight.
........
r70964 | brett.cannon | 2009-04-01 12:52:13 -0500 (Wed, 01 Apr 2009) | 2 lines
Paul Kippes was given commit privileges to work on 3to2.
........
r70998 | georg.brandl | 2009-04-01 16:54:21 -0500 (Wed, 01 Apr 2009) | 1 line
In Pdb, stop assigning values to __builtin__._ which interferes with the one commonly installed by gettext.
........
r71001 | brett.cannon | 2009-04-01 18:01:12 -0500 (Wed, 01 Apr 2009) | 3 lines
Add my initials to Misc/developers.txt. Names are now sorted by number of
characters in the person's name.
........
r71006 | georg.brandl | 2009-04-01 18:32:17 -0500 (Wed, 01 Apr 2009) | 1 line
Cache the f_locals dict of the current frame, since every access to frame.f_locals overrides its contents with the real locals which undoes modifications made by the debugging user.
........
r71008 | andrew.kuchling | 2009-04-01 19:02:14 -0500 (Wed, 01 Apr 2009) | 1 line
Typo fix
........
r71010 | benjamin.peterson | 2009-04-01 19:11:52 -0500 (Wed, 01 Apr 2009) | 1 line
fix markup
........
r71011 | benjamin.peterson | 2009-04-01 19:12:47 -0500 (Wed, 01 Apr 2009) | 1 line
this should be :noindex:
........
r71019 | georg.brandl | 2009-04-01 21:00:01 -0500 (Wed, 01 Apr 2009) | 1 line
Fix test_doctest, missed two assignments to curframe.
........
r71037 | r.david.murray | 2009-04-01 23:34:04 -0500 (Wed, 01 Apr 2009) | 6 lines
Clarify that datetime strftime does not produce leap seconds and datetime
strptime does not accept it in the strftime behavior section of the
datetime docs.
Closes issue 2568.
........
r71056 | georg.brandl | 2009-04-02 12:43:07 -0500 (Thu, 02 Apr 2009) | 2 lines
Actually the displayhook should print the repr.
........
r71094 | vinay.sajip | 2009-04-03 05:23:18 -0500 (Fri, 03 Apr 2009) | 1 line
Added warning about logging use from asynchronous signal handlers.
........
r71101 | andrew.kuchling | 2009-04-03 16:43:00 -0500 (Fri, 03 Apr 2009) | 1 line
Add some items
........
r71102 | andrew.kuchling | 2009-04-03 16:44:49 -0500 (Fri, 03 Apr 2009) | 1 line
Fix 'the the'; grammar fix
........
r71103 | andrew.kuchling | 2009-04-03 16:45:29 -0500 (Fri, 03 Apr 2009) | 1 line
Fix 'the the' duplication
........
r71106 | vinay.sajip | 2009-04-03 16:58:16 -0500 (Fri, 03 Apr 2009) | 1 line
Clarified warning about logging use from asynchronous signal handlers.
........
r71119 | raymond.hettinger | 2009-04-04 00:37:47 -0500 (Sat, 04 Apr 2009) | 1 line
Add helpful link.
........
r71123 | r.david.murray | 2009-04-04 01:39:56 -0500 (Sat, 04 Apr 2009) | 2 lines
Fix error in description of 'oct' (issue 5678).
........
r71149 | georg.brandl | 2009-04-04 08:42:39 -0500 (Sat, 04 Apr 2009) | 1 line
#5642: clarify map() compatibility to the builtin.
........
r71150 | georg.brandl | 2009-04-04 08:45:49 -0500 (Sat, 04 Apr 2009) | 1 line
#5601: clarify that webbrowser is not meant for file names.
........
r71203 | benjamin.peterson | 2009-04-04 18:46:34 -0500 (Sat, 04 Apr 2009) | 1 line
note how using iter* are unsafe while mutating and document iter(dict)
........
r71212 | georg.brandl | 2009-04-05 05:24:20 -0500 (Sun, 05 Apr 2009) | 1 line
#1742837: expand HTTP server docs, and fix SocketServer ones to document methods as methods, not functions.
........
r71214 | georg.brandl | 2009-04-05 05:29:57 -0500 (Sun, 05 Apr 2009) | 1 line
Normalize spelling of Mac OS X.
........
r71215 | georg.brandl | 2009-04-05 05:32:26 -0500 (Sun, 05 Apr 2009) | 1 line
Avoid sure signs of a diseased mind.
........
r71216 | georg.brandl | 2009-04-05 05:41:02 -0500 (Sun, 05 Apr 2009) | 1 line
#1718017: document the relation of os.path and the posixpath, ntpath etc. modules better.
........
r71217 | georg.brandl | 2009-04-05 05:48:47 -0500 (Sun, 05 Apr 2009) | 1 line
#1726172: dont raise an unexpected IndexError if a voidresp() call has an empty response.
........
r71221 | vinay.sajip | 2009-04-05 06:06:24 -0500 (Sun, 05 Apr 2009) | 1 line
Issue #5695: Moved logging.captureWarnings() call inside with statement in WarningsTest.test_warnings.
........
r71240 | georg.brandl | 2009-04-05 09:40:06 -0500 (Sun, 05 Apr 2009) | 1 line
#5370: doc update about unpickling objects with custom __getattr__ etc. methods.
........
2009-04-05 16:13:16 -03:00
|
|
|
d['xx'].append(5) # *this doesn't!* -- d['xx'] is STILL range(4)!
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
# having opened d without writeback=True, you need to code carefully:
|
|
|
|
temp = d['xx'] # extracts the copy
|
|
|
|
temp.append(5) # mutates the copy
|
|
|
|
d['xx'] = temp # stores the copy right back, to persist it
|
|
|
|
|
|
|
|
# or, d=shelve.open(filename,writeback=True) would let you just code
|
|
|
|
# d['xx'].append(5) and have it work as expected, BUT it would also
|
|
|
|
# consume more memory and make the d.close() operation slower.
|
|
|
|
|
|
|
|
d.close() # close it
|
|
|
|
|
|
|
|
|
|
|
|
.. seealso::
|
|
|
|
|
2008-05-26 07:29:35 -03:00
|
|
|
Module :mod:`dbm`
|
|
|
|
Generic interface to ``dbm``-style databases.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
Module :mod:`pickle`
|
|
|
|
Object serialization used by :mod:`shelve`.
|
|
|
|
|
|
|
|
Module :mod:`cPickle`
|
|
|
|
High-performance version of :mod:`pickle`.
|
|
|
|
|