@@ -40,7 +40,7 @@ Fork me on [GitHub](https://github.com/pynickle/python-cheatsheet-redefined).
4040** Text Processing** : [ `` string `` ] ( #string ) , [ `` re `` ] ( #re ) , [ `` difflib `` ] ( #difflib ) ,
4141[ `` textwrap `` ] ( #textwrap ) , [ `` unicodedata `` ] ( #unicodedata ) , [ `` readline `` ] ( #readline )
4242
43- ** Binary Data** : [ `` codecs `` ] ( #codecs ) , [ `` struct `` ] ( #struct )
43+ ** Binary Data Services ** : [ `` codecs `` ] ( #codecs ) , [ `` struct `` ] ( #struct )
4444
4545** Data Type** : [ `` datetime `` ] ( #datetime ) , [ `` zoneinfo `` ] ( #zoneinfo ) , [ `` calendar `` ] ( #calendar ) ,
4646[ `` collections `` ] ( #collections ) ,[ `` copy `` ] ( #copy ) , [ `` pprint `` ] ( #pprint ) ,
@@ -56,7 +56,7 @@ Fork me on [GitHub](https://github.com/pynickle/python-cheatsheet-redefined).
5656[ `` tempfile `` ] ( #tempfile ) , [ `` filecmp `` ] ( #filecmp ) , [ `` fileinput `` ] ( #fileinput ) ,
5757[ `` shutil `` ] ( #shutil ) , [ `` linecache `` ] ( #linecache )
5858
59- ** Data Persistence** : [ `` pickle `` ] ( #pickle ) , [ `` copyreg `` ] ( #copyreg )
59+ ** Data Persistence** : [ `` pickle `` ] ( #pickle ) , [ `` copyreg `` ] ( #copyreg ) , [ `` shelve `` ] ( #shelve )
6060
6161** Data Compression** : [ `` zlib `` ] ( #zlib ) , [ `` lzma `` ] ( #lzma ) , [ `` zipfile `` ] ( #zipfile )
6262
@@ -949,6 +949,45 @@ pickle A
949949pickle A
950950```
951951
952+ # # shelve
953+
954+ # ###
955+
956+ ```python
957+ >> > import shelve
958+ >> >
959+ >> > # Open a shelf file (creates if not exists)
960+ >> > with shelve.open(' geenrated/mydata.db' ) as db:
961+ ... # Basic operations: set, get, delete, check existence
962+ ... db[' name' ] = ' Alice'
963+ ... db[' numbers' ] = [1 , 2 , 3 ]
964+ ...
965+ ... db[' name' ]
966+ ... ' numbers' in db # Check key
967+ ... list (db.keys()) # List keys
968+ ...
969+ ... # Modify mutable object without writeback (requires re-assignment)
970+ ... temp = db[' numbers' ] # Get copy
971+ ... temp.append(4 ) # Modify
972+ ... db[' numbers' ] = temp # Re-assign to persist
973+ ...
974+ ... del db[' name' ]
975+ ...
976+ ... # Sync to ensure data is written to disk
977+ ... db.sync()
978+ ...
979+ Alice
980+ True
981+ [' name' , ' numbers' ]
982+ >> >
983+ >> > # Re-open with writeback=True for direct modification
984+ >> > db = shelve.open(' mydata.db' , writeback = True )
985+ >> > db[' numbers' ].append(5 ) # Direct modify (auto-persisted on close)
986+ >> > db[' numbers' ]
987+ [1 , 2 , 3 , 4 , 5 ]
988+ >> > db.close() # Close and sync
989+ ```
990+
952991# # zlib
953992
954993# ### compress, decompress
0 commit comments