Heim >Backend-Entwicklung >Python-Tutorial >Grundlegende Einführung in das Regalmodul
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.
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.
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)
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!