Просмотр содержимого документа
«Python бағдарламалау тіліндегі Shelve модулі»
Сабақтың тақырыбы: Shelve модулі
1. Shelve модулі ұғымы
2. Берілгендерді жаңарту
3. Берілгендерді жою
Python тілінде бинарлы файлдармен жұмыс істеу үшін тағы бір модуль - shelve модулі қолданылады. Ол объектілерді файлға белгілі бір кілт бойынша сақтайды. Содан кейін осы кілт бойынша сақталған объектілерді файлдан алады. Берілгендермен shelve модулі арқылы жұмыс істеу процесі сөздікпен жұмысқа ұқсайды.
Файлды ашу үшін shelve модулі open() функциясын қолданады:
Мұнда flag параметрі келесі мәндерді қабылдауы мүмкін:
c: файл оқу және жазу үшін ашылады. Егер ондай файл болмаса, ол жаңадан құрылады.
r: файл тек оқу үшін ашылады.
w: файл жазу үшін ашылады.
n: файл жазу үшін ашылады. Егер ондай файл болмаса, ол жаңадан құрылады. Егер ондай файл болса, ол қайта жазылады.
Файлды жабу үшін close() әдісі қолданылады:
import shelve
d = shelve.open(filename)
d.close()
Файлды with операторымен ашуға да болады. Файлға бірнеше объектіні сақтап, оларды оқиық:
import shelve
FILENAME = "states2"
with shelve.open(FILENAME) as states:
states["London"] = "Great Britain"
states["Paris"] = "France"
states["Berlin"] = "Germany"
states["Madrid"] = "Spain"
with shelve.open(FILENAME) as states:
print(states["London"])
print(states["Madrid"])
Берілгендерді жазу белгілі бір кілтке мән орнатуды білдіреді:
states["London"] = "Great Britain"
Ал файлдан оқу кілт бойынша мән алуға пара-пар:
print(states["London"])
Кілттер ретінде жолдық мәндер қолданылады:
Берілгендерді оқу кезінде егер сұралатын кілт болмаса, онда ерекше жағдай генерацияланады. Мұндай жағдайда алдымен кілттің бар-жоқтығын in операторының көмегімен тексеріп алу керек.
with shelve.open(FILENAME) as states:
key = "Brussels"
if key in states:
print(states[key])
Сондай-ақ get() әдісін қолдануға болады. Әдістің бірінші параметрі - кілт, екінші параметрі - кілт табылмаған жағдайда үнсіз келісім бойынша қайтарылатын мән.
with shelve.open(FILENAME) as states:
state = states.get("Brussels", "Undefined")
print(state)
For циклін қолданып файлдан мәндерді алуға болады:
with shelve.open(FILENAME) as states:
for key in states:
print(key," - ", states[key])
keys() әдісі файлдан барлық кілттерді, ал values() - барлық мәндерді қайтарады:
with shelve.open(FILENAME) as states:
for city in states.keys():
print(city, end=" ") # London Paris Berlin Madrid
print()
for country in states.values():
print(country, end=" ") # Great Britain France Germany Spain
items() әдісі кортеждер жиынын қайтарады. Әр кортеж кілт пен мәннен тұрады:
with shelve.open(FILENAME) as states:
for state in states.items():
print(state)
Консольдық шығару:
("London", "Great Britain")
("Paris", "France")
("Berlin", "Germany")
("Madrid", "Spain")
Берілгендерді жаңарту
Берілгендерді өзгерту үшін кілтке жаңа мән меншіктеу жеткілікті, ал жаңа берілгендер қосу үшін жаңа кілт анықтау керек:
import shelve
FILENAME = "states2"
with shelve.open(FILENAME) as states:
states["London"] = "Great Britain"
states["Paris"] = "France"
states["Berlin"] = "Germany"
states["Madrid"] = "Spain"
with shelve.open(FILENAME) as states:
states["London"] = "United Kingdom"
states["Brussels"] = "Belgium"
for key in states:
print(key, " - ", states[key])
Берілгендерді жою
Берілгендерді жою үшін pop() функциясын қолдануға болады, оған элемент кілті мен кілт табылмағандағы үнсіз келісім бойыша мән беріледі:
with shelve.open(FILENAME) as states:
state = states.pop("London", "NotFound")
print(state)
Объектіні жою үшін del операторын да қолдануға болады:
with shelve.open(FILENAME) as states:
del states["Madrid"] # удаляем объект с ключом Madrid
Барлық элементтерді жою үшін clear() әдісін қолданамыз: