Maison >développement back-end >Tutoriel Python >Introduction de base au module étagère
shelve
shelve est une solution simple de stockage de données. Elle n'a qu'une seule fonction, qui est. open (), cette fonction reçoit un paramètre qui est le nom du fichier, puis renvoie un objet étagère. Vous pouvez l'utiliser pour stocker des éléments, ou simplement le traiter comme un dictionnaire. Lorsque vous avez terminé le stockage, appelez la fonction close pour fermer.
Il y a un petit problème potentiel avec cela, comme suit :
[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']
Où va le d stocké ? En fait, c'est très simple. d ne réécrit pas. Vous enregistrez ['a', 'b', 'c'] dans x Lorsque vous relisez s['x'], s['x'] est. juste une copie, et vous n'avez pas réécrit la copie, donc lorsque vous relisez s['x'], il lit une copie de la source, donc votre contenu nouvellement modifié n'apparaîtra pas dans la copie, la solution est la suivante. la première consiste à utiliser une variable mise en cache, comme indiqué ci-dessous
[python] view plain copy >>> temp = s['x'] >>> temp.append('d') >>> s['x'] = temp >>> s['x'] ['a', 'b', 'c', 'd']
Il existe une autre méthode dans python2.4, qui consiste à attribuer la valeur du paramètre writeback de la méthode open à True, dans ce cas , tout le contenu sera dans le cache après son ouverture. Lorsque vous le fermerez, tout sera écrit sur le disque dur en même temps. Ceci est recommandé si la quantité de données n’est pas très importante.
Dans python3, nous utilisons json ou pickle pour conserver les données, qui peuvent être vidées plusieurs fois, mais ne peuvent être chargées que une fois parce que les données précédentes ont été écrasées par les données de vidage suivantes. Si nous voulons implémenter le dump et le chargement plusieurs fois, nous pouvons utiliser le module shelve. Le module shelve peut conserver tous les types de données pris en charge par 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 # 持久化时间类型
Après avoir exécuté le code, 3 fichiers seront générés : shelve.txt.bak, shelve.txt.dat, shelve.txt.dir. Contenu de
shelve.txt.bak
'info', (512, 45) 'name', (0, 42) 'time', (1024, 44)
shelve.txt. dat
�]q (X ApollqX ZousqX Lunaqe. �}q (X ageqKX nameqX bigbergqu. �cdatetime datetime q C �" 2�q�qRq.
Le contenu de shelve.txt.dir
'info', (512, 45) 'name', (0, 42) 'time', (1024, 44)
Nous utilisons get pour obtenir des données
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. Le module est un simple module de clé et de valeur qui conserve les données de mémoire dans les fichiers.
2. Le module shelve peut conserver n'importe quel format de données Python pris en charge par pickle.
3. Shelve est un package de module cornichon.
4. Le module d'étagère peut être vidé et chargé plusieurs fois.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!