Язык программирования Python
Шрифт:
makedirs(path[, mode]) Аналог mkdir, создающий все необходимые каталоги, если они не существуют. Возбуждает исключение, когда последний каталог уже существует.
remove(path), unlink(path) Удаляет файл path. Для удаления каталогов используются rmdir и removedirs.
rmdir(path) Удаляет пустой каталог path.
removedirs(path) Удаляет path до первого непустого каталога. В случае если самый последний вложенный подкаталог в указанном пути — не пустой, возбуждается исключение OSError.
rename(src, dst) Переименовывает файл или каталог src в dst.
renames(src, dst) Аналог rename,
stat(path) Возвращает информацию о path в виде не менее чем десятиэлементного кортежа. Для доступа к элементам кортежа можно использовать константы из модуля stat, например stat.ST_MTIME (время последней модификации файла).
utime(path, times) Устанавливает значения времен последней модификации (mtime) и доступа к файлу (atime). Если times равен None, в качестве времен берется текущее время. В других случаях times рассматривается как двухэлементный кортеж (atime, mtime). Для получения atime и mtime некоторого файла можно использовать stat совместно с константами модуля stat.
Для работы с процессами модуль os предлагает следующие функции (здесь упомянуты только некоторые, доступные как в Unix, так и в Windows):
abort Вызывает для текущего процесса сигнал SIGABRT.
system(cmd) Выполняет командную строку cmd в отдельной оболочке, аналогично вызову system библиотеки языка C. Возвращаемое значение зависит от используемой платформы.
times Возвращает кортеж из пяти элементов, содержащий время в секундах работы процесса, ОС (по обслуживанию процесса), дочерних процессов, ОС для дочерних процессов, а также время от фиксированного момента в прошлом (например, от момента запуска системы).
getloadavg Возвращает кортеж из трех значений, соответствующих занятости процессора за последние 1, 5 и 15 минут.
Модуль stat
В этом модуле описаны константы, которые можно использовать как индексы к кортежам, применяемым функциями os.stat и os.chmod (а также некоторыми другими). Их можно уточнить в документации по Python.
Модуль tempfile
Программе иногда требуется создать временный файл, который после выполнения некоторых действий больше не нужен. Для этих целей можно использовать функцию TemporaryFile, которая возвращает файловый объект, готовый к записи и чтению.
В следующем примере создается временный файл, куда записываются данные и затем читаются:
Листинг
import tempfile
f = tempfile.TemporaryFile
f.write(«0»*100) # записывается сто символов 0
f.seek(0) # уст. указатель на начало файла
print len(f.read) # читается до конца файла и вычисляется длина
Как и следовало ожидать, в результате будет выведено 100. Временный файл будет удален, как только будут удалены все ссылки на его объект.
Обработка текстов
Модули этой категории будут подробно рассмотрены в отдельной лекции.
Многопоточные вычисления
Модули этой категории станут предметом рассмотрения отдельной лекции.
Хранение данных. Архивация
К этой категории отнесены модули, которые работают с внешними хранилищами данных.
Модуль pickle
Процесс записи объекта в виде последовательности байтов называется
сериализацией. Для того чтобы сохранить объект во внешней памяти или передать его по каналам связи, его нужно вначале сериализовать.Модуль 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
Модуль shelve
Для хранения объектов в родном для 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 # закрытие полки
Модули anydbm и gdbm
Для внешнего хранения данных можно использовать примитивные базы данных, содержащие пары ключ–значение. В Python имеется несколько модулей для работы с такими базами: bsddb, gdbm, dbhash и т.п. Модуль anydbm выбирает один из имеющихся хэшей, поэтому его можно применять для чтения ряда форматов (any — любой).
Доступ к хэшу из Python мало отличается от доступа к словарю. Разница лишь в том, что хэш еще нужно открыть для создания, чтения или записи, а затем закрыть. Кроме того, при записи хэш блокируется, чтобы не испортить данные.
Модуль csv
Формат CSV (comma separated values — значения, разделенные запятыми) достаточно популярен для обмена данными между электронными таблицами и базами данных. Следующий ниже пример посвящен записи в CSV–файл и чтению из него:
Листинг
mydata = [(1, 2, 3), (1, 3, 4)]
import csv
# Запись в файл:
f = file(«my.csv», «w»)
writer = csv.writer(f)
for row in mydata:
writer.writerow(row)
f.close
# Чтение из файла: