Introduction de base au module étagère

零下一度
Libérer: 2017-07-23 10:04:52
original
2535 Les gens l'ont consulté

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']
Copier après la connexion

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']
Copier après la connexion

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            # 持久化时间类型
Copier après la connexion

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)
Copier après la connexion
Copier après la connexion
  • shelve.txt. dat 

�]q (X   ApollqX   ZousqX   Lunaqe.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      �}q (X   ageqKX   nameqX   bigbergqu.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   �cdatetime
datetime
q C
�"
2�q�qRq.
Copier après la connexion
  • Le contenu de shelve.txt.dir

'info', (512, 45)
'name', (0, 42)
'time', (1024, 44)
Copier après la connexion
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!