В этом модуле описаны константы, которые можно использовать как индексы к кортежам, применяемым функциями os.stat()
и os.chmod()
(а также некоторыми другими). Их можно уточнить в документации по Python.
Программе иногда требуется создать временный файл, который после выполнения некоторых действий больше не нужен. Для этих целей можно использовать функцию TemporaryFile
, которая возвращает файловый объект, готовый к записи и чтению.
В следующем примере создается временный файл, куда записываются данные и затем читаются:
import tempfile
f = tempfile.TemporaryFile()
f.write("0"*100) # записывается сто символов 0
f.seek(0) # уст. указатель на начало файла
print len(f.read()) # читается до конца файла и вычисляется длина
Как и следовало ожидать, в результате будет выведено 100. Временный файл будет удален, как только будут удалены все ссылки на его объект.
Обработка текстов
Модули этой категории будут подробно рассмотрены в отдельной лекции.
Многопоточные вычисления
Модули этой категории станут предметом рассмотрения отдельной лекции.
Хранение данных. Архивация
К этой категории отнесены модули, которые работают с внешними хранилищами данных.
Процесс записи объекта в виде последовательности байтов называется сериализацией. Для того чтобы сохранить объект во внешней памяти или передать его по каналам связи, его нужно вначале сериализовать.
Модуль pickle
позволяет сериализовывать объекты и сохранять их в строке или файле. Следующие объекты могут быть сериализованы:
• встроенные типы: None
, числа, строки (обычные и Unicode).
• списки, кортежи и словари, содержащие только сериализуемые объекты.
• функции, определенные на уровне модуля (сохраняется имя, но не реализация!).
• встроенные функции.
• классы, определенные на уровне модуля.
• объекты классов, __dict__
или __setstate__()
которых являются сериализуемыми.
Типичный вариант использования модуля приведен ниже.
Сохранение:
import pickle, time
mydata = ("abc", 12, [1, 2, 3])
output_file = open("mydata.dat", "w")
p = pickle.Pickler(output_file)
p.dump(mydata)
output_file.close()
Восстановление:
import pickle
input_file = open("mydata.dat", "r")
mydata = pickle.load(input_file)
print mydata
input_file.close()
Для хранения объектов в родном для Python формате можно применять полку (shelve
). По своему интерфейсу полка ничем не отличается от словаря. Следующий пример показывает, как использовать полку:
import shelve
data = ("abc", 12) # - данные (объект)
key = "key" # - ключ (строка)
filename = "polka.dat" # - имя файла для хранения полки
d = shelve.open(filename) # открытие полки
d[key] = data # сохранить данные под ключом key
# (удаляет старое значение, если оно было)
data = d[key] # загрузить значение по ключу
len(d) # получить количество объектов на полке
d.sync() # запись изменений в БД на диске
del d[key] # удалить ключ и значение
flag = d.has_key(key) # проверка наличия ключа
lst = d.keys() # список ключей
d.close() # закрытие полки
Для внешнего хранения данных можно использовать примитивные базы данных, содержащие пары ключ–значение. В Python имеется несколько модулей для работы с такими базами: bsddb
, gdbm
, dbhash
и т.п. Модуль anydbm
выбирает один из имеющихся хэшей, поэтому его можно применять для чтения ряда форматов (any — любой).