Maison >développement back-end >Tutoriel Python >Introduction de base au module étagère

Introduction de base au module étagère

零下一度
零下一度original
2017-07-23 10:04:522590parcourir

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.

1. Introduction

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.

2. Données persistantes

1. Persistance des données

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)

2. Lecture des données

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn