posixfile — Объекты, подобные файлам, с поддержкой блокировки
Устарело начиная с версии 1.5: Операция блокировки, предоставляемая этим модулем, выполняется лучше и более переносимо функцией fcntl.lockf().
Этот модуль реализует некоторые дополнительные функции по сравнению со встроенными объектами файлов. В частности, он реализует блокировку файлов, управление флагами файлов и простой интерфейс для дублирования объекта файла. Модуль определяет новый объект файла — объект posixfile. Он имеет все стандартные методы объекта файла и добавляет методы, описанные ниже. Этот модуль работает только для определенных типов Unix, так как он использует fcntl.fcntl() для блокировки файлов.
Для создания объекта posixfile используйте функцию posixfile.open(). Результирующий объект выглядит и ведет себя примерно так же, как стандартный объект файла.
Модуль posixfile определяет следующие константы:
-
posixfile.SEEK_SET -
Смещение вычисляется с начала файла.
-
posixfile.SEEK_CUR -
Смещение вычисляется от текущей позиции в файле.
-
posixfile.SEEK_END -
Смещение вычисляется от конца файла.
Модуль posixfile определяет следующие функции:
-
posixfile.open(filename[, mode[, bufsize]]) -
Создает новый объект posixfile с заданным именем файла и режимом. Аргументы filename, mode и bufsize интерпретируются так же, как и во встроенной функции
open().
-
posixfile.fileopen(fileobject) -
Создает новый объект posixfile с заданным стандартным объектом файла. Результирующий объект имеет то же имя файла и режим, что и исходный объект файла.
Объект posixfile определяет следующие дополнительные методы:
-
posixfile.lock(fmt[, len[, start[, whence]]]) -
Блокирует указанный участок файла, на который ссылается объект файла. Формат описан ниже в таблице. Аргумент len задаёт длину участка, который следует заблокировать. По умолчанию это
0. start задаёт начальное смещение участка, по умолчанию0. Аргумент whence задаёт, относительно чего вычисляется смещение. Принимает одно из значений константSEEK_SET,SEEK_CURилиSEEK_END. По умолчаниюSEEK_SET. Для получения дополнительной информации об аргументах обратитесь к справочной странице fcntl(2) вашей системы.
-
posixfile.flags([flags]) -
Устанавливает указанные флаги для файла, на который ссылается объект файла. Новые флаги объединяются с предыдущими при помощи побитового ИЛИ, если не указано иное. Формат описан ниже в таблице. Без аргумента flags возвращается строка, представляющая текущие флаги (это то же самое, что и модификатор
?). Для получения дополнительной информации о флагах обратитесь к справочной странице fcntl(2) вашей системы.
-
posixfile.dup() -
Дублирует объект файла и связанный с ним указатель файла и дескриптор. Результирующий объект ведёт себя так, как будто он был вновь открыт.
-
posixfile.dup2(fd) -
Дублирует объект файла и связанный с ним указатель файла и дескриптор. Новый объект будет иметь заданный дескриптор файла. В противном случае результирующий объект ведёт себя так, как будто он был вновь открыт.
-
posixfile.file() -
Возвращает стандартный объект файла, на котором основан объект posixfile. Это иногда необходимо для функций, которые настаивают на стандартном объекте файла.
Все методы поднимают исключение IOError, если запрос не удаётся.
Символы формата для метода lock() имеют следующее значение:
Формат | Значение |
|---|---|
| разблокировать указанный регион |
| запросить чтение блокировки для указанного участка |
| запросить запись блокировки для указанного участка |
Кроме того, к формату можно добавить следующие модификаторы:
Модификатор | Значение | Примечания |
|---|---|---|
| ждать, пока блокировка не будет предоставлена | |
| возвратить первую блокировку, конфликтующую с запрошенной блокировкой, или | (1) |
Примечание:
- Возвращаемая блокировка имеет формат
(mode, len, start, whence, pid), где mode — символ, представляющий тип блокировки (‘r’ или ‘w’). Этот модификатор предотвращает предоставление запроса; он предназначен только для запросов.
Символы формата для метода flags() имеют следующие значения:
Формат | Значение |
|---|---|
| только добавление флага |
| флаг закрытия при выполнении |
| флаг без задержки (также называется флагом без блокировки) |
| флаг синхронизации |
Кроме того, к формату можно добавить следующие модификаторы:
Модификатор | Значение | Примечания |
|---|---|---|
| выключить указанные флаги, вместо значения по умолчанию 'включить' | (1) |
| заменить флаги, вместо операции 'ИЛИ' по умолчанию | (1) |
| возвратить строку, в которой символы представляют установленные флаги. | (2) |
Примечания:
- Модификаторы
!и=взаимоисключают друг друга. - Эта строка представляет флаги после того, как они могли быть изменены тем же вызовом.
Примеры:
import posixfile
file = posixfile.open('testfile', 'w')
file.lock('w|')
...
file.lock('u')
file.close()
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/posixfile.html