Home > Article > Backend Development > Basic introduction to shelve module
shelve
shelve is a simple data storage solution. It has only one function: open (), this function receives a parameter which is the file name, and then returns a shelf object. You can use it to store things, or simply treat it as a dictionary. When you are finished storing, call the close function to close it.
There is a potential small problem with this, as follows:
[python] view plain copy >>> import shelve >>> s = shelve.open('test.dat') >>> s['x'] = ['a', 'b', 'c'] >>> s['x'].append('d') >>> s['x'] ['a', 'b', 'c']
Where does the stored d go? In fact, it is very simple. d does not write back. You save ['a', 'b', 'c'] to x. When you read s['x'] again, s['x'] is just a Copy, and you did not write the copy back, so when you read s['x'] again, it read a copy from the source, so your newly modified content will not appear in the copy. , the solution is, the first one is to use a cached variable, as shown below
[python] view plain copy >>> temp = s['x'] >>> temp.append('d') >>> s['x'] = temp >>> s['x'] ['a', 'b', 'c', 'd']
There is another method in python2.4, which is to assign the value of the writeback parameter of the open method to True. In this case, all the content after you open it will be in the cache, and when you close it, everything will be written to the hard disk at once. This is recommended if the amount of data is not very large.
In python3, we use json or pickle to persist data. It can be dumped multiple times, but can only be loaded once. Because the previous data has been overwritten by the subsequent dump data. If we want to implement dump and load multiple times, we can use the shelve module. The shelve module can persist all data types supported by pickle.
import shelve import datetime info = {'name': 'bigberg', 'age': 22} name = ['Apoll', 'Zous', 'Luna'] t = datetime.datetime.now() with shelve.open('shelve.txt') as f: f['name'] = name # 持久化列表 f['info'] = info # 持久化字典 f['time'] = t # 持久化时间类型
After executing the code, 3 files will be generated: shelve.txt.bak, shelve.txt.dat, shelve.txt.dir.
#shelve.txt.bak Content
'info', (512, 45) 'name', (0, 42) 'time', (1024, 44)
�]q (X ApollqX ZousqX Lunaqe. �}q (X ageqKX nameqX bigbergqu. �cdatetime datetime q C �" 2�q�qRq.
'info', (512, 45) 'name', (0, 42) 'time', (1024, 44)
import shelve with shelve.open('shelve.txt') as f: n = f.get('name') i = f.get('info') now = f.get('time') print(n) print(i) print(now) #输出 ['Apoll', 'Zous', 'Luna'] {'age': 22, 'name': 'bigberg'} 2017-07-08 11:07:34.865022
1. The shelve module is a simple key, value A module that persists memory data through files.
2. The shelve module can persist any python data format supported by pickle.
3. Shelve is a package of the pickle module.
4. The shelve module can dump and load multiple times.
The above is the detailed content of Basic introduction to shelve module. For more information, please follow other related articles on the PHP Chinese website!