Heim  >  Artikel  >  Backend-Entwicklung  >  Grundlegende Einführung in das Regalmodul

Grundlegende Einführung in das Regalmodul

零下一度
零下一度Original
2017-07-23 10:04:522510Durchsuche

shelf

shelve ist eine einfache Datenspeicherlösung, nämlich open(), diese Funktion empfängt einen Parameter, der den Dateinamen darstellt, und gibt dann ein Regalobjekt zurück. Sie können es zum Speichern von Dingen verwenden oder es einfach als Wörterbuch behandeln. Wenn Sie mit dem Speichern fertig sind, rufen Sie zum Schließen die Funktion close auf

Dabei besteht möglicherweise ein kleines Problem wie folgt:

[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']

Wohin geht das gespeicherte D? Tatsächlich ist es sehr einfach. Sie speichern ['a', 'b', 'c'] in x nur eine Kopie, und Sie haben die Kopie nicht zurückgeschrieben. Wenn Sie also s['x'] erneut lesen, wird eine Kopie aus der Quelle gelesen, sodass Ihr neu geänderter Inhalt nicht in der Kopie erscheint. Die Lösung lautet: Die erste besteht darin, eine zwischengespeicherte Variable zu verwenden, wie unten gezeigt

[python] view plain copy
>>> temp = s['x']  
>>> temp.append('d')  
>>> s['x'] = temp  
>>> s['x']  
['a', 'b', 'c', 'd']

Es gibt eine andere Methode in Python2.4, die darin besteht, den Wert des Writeback-Parameters der offenen Methode auf True zuzuweisen In diesem Fall befindet sich der gesamte Inhalt im Cache, nachdem Sie ihn geöffnet haben. Wenn Sie ihn schließen, wird alles auf einmal auf die Festplatte geschrieben. Dies empfiehlt sich, wenn die Datenmenge nicht sehr groß ist.

1. Einführung

In Python3 verwenden wir JSON oder Pickle, um Daten beizubehalten, die mehrmals gespeichert, aber nur geladen werden können einmalig, da die vorherigen Daten durch die nachfolgenden Dump-Daten überschrieben wurden. Wenn wir Dump und Load mehrmals implementieren möchten, können wir das Shelve-Modul verwenden. Das Shelve-Modul kann alle von pickle unterstützten Datentypen beibehalten.

2. Persistente Daten

1. Datenpersistenz

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            # 持久化时间类型

Nach der Ausführung des Codes werden 3 Dateien generiert: shelve.txt.bak, shelve.txt.dat, shelve.txt.dir. Inhalt von

  • 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.
  • Der Inhalt von shelve.txt.dir

'info', (512, 45)
'name', (0, 42)
'time', (1024, 44)

2. Datenlesen

Wir verwenden get, um Daten zu erhalten

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 Das Modul ist ein einfaches Schlüssel- und Wertmodul, das Speicherdaten über Dateien speichert.

2. Das Shelve-Modul kann jedes von Pickle unterstützte Python-Datenformat beibehalten.

3. Regal ist ein Paket des Pickle-Moduls.

4. Das Regalmodul kann mehrmals entleert und geladen werden.

Das obige ist der detaillierte Inhalt vonGrundlegende Einführung in das Regalmodul. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn