Spec-Zone.ru › Python 3.11

Объекты файлов

Эти API представляют собой минимальную эмуляцию API Python 2 для встроенных объектов файлов, которые ранее полагались на поддержку буферизованного ввода-вывода (FILE*) из стандартной библиотеки C. В Python 3 файлы и потоки используют новый модуль io, который определяет несколько уровней над низкоуровневым небуферизованным вводом-выводом операционной системы. Функции, описанные ниже, являются удобными C-обёртками над этими новыми API и предназначены в основном для внутренней обработки ошибок в интерпретаторе; сторонним кодам рекомендуется обращаться к API io вместо этого.

PyObject *PyFile_FromFd(int fd, const char *name, const char *mode, int buffering, const char *encoding, const char *errors, const char *newline, int closefd)
Значение возврата: Новая ссылка. Часть Стабильной ABI.

Создать объект Python файла из дескриптора файла уже открытого файла fd. Аргументы name, encoding, errors и newline могут быть NULL для использования значений по умолчанию; buffering может быть -1 для использования значения по умолчанию. name игнорируется и сохраняется для обратной совместимости. Возвращает NULL при ошибке. Для более подробного описания аргументов, пожалуйста, обратитесь к документации функции io.open().

Предупреждение

Поскольку потоки Python имеют свой собственный буферизованный слой, смешивание их с дескрипторами файлов на уровне ОС может привести к различным проблемам (таким как неожиданная последовательность данных).

Изменено в версии 3.2: Игнорирует атрибут name.

int PyObject_AsFileDescriptor(PyObject *p)
Часть Стабильной ABI.

Возвращает дескриптор файла, связанный с p, как int. Если объект является целым числом, возвращается его значение. Если нет, вызывается метод объекта fileno(), если он существует; метод должен возвращать целое число, которое возвращается как значение дескриптора файла. Устанавливает исключение и возвращает -1 при ошибке.

PyObject *PyFile_GetLine(PyObject *p, int n)
Значение возврата: Новая ссылка. Часть Стабильной ABI.

Эквивалентно p.readline([n]), эта функция читает одну строку из объекта p. p может быть объектом файла или любым объектом с методом readline(). Если n равно 0, читается ровно одна строка, независимо от длины строки. Если n больше, чем 0, не более n байтов будут считаны из файла; может быть возвращена частичная строка. В обоих случаях возвращается пустая строка, если конец файла достигнут сразу. Если же n меньше 0, однако, одна строка считывается независимо от длины, но EOFError возникает, если конец файла достигнут сразу.

int PyFile_SetOpenCodeHook(Py_OpenCodeHookFunction handler)

Переопределяет обычное поведение io.open_code() для передачи его параметра через предоставленный обработчик.

Обработчик — функция типа PyObject *(*)(PyObject *path, void *userData), где path гарантированно является PyUnicodeObject.

Указатель userData передаётся в функцию-обработчик. Так как функции-обработчики могут вызываться из разных сред выполнения, этот указатель не должен ссылаться непосредственно на состояние Python.

Поскольку этот обработчик преднамеренно используется во время импорта, избегайте импорта новых модулей во время его выполнения, если они не известны как замороженные или доступные в sys.modules.

После установки обработчик не может быть удалён или заменён, и последующие вызовы PyFile_SetOpenCodeHook() будут неудачными. При ошибке функция возвращает -1 и устанавливает исключение, если интерпретатор был инициализирован.

Эту функцию безопасно вызывать до Py_Initialize().

Вызывает событие аудита аудита setopencodehook без аргументов.

Добавлен в версии 3.8.

int PyFile_WriteObject(PyObject *obj, PyObject *p, int flags)
Часть Стабильной ABI.

Записать объект obj в объект файла p. Единственный поддерживаемый флаг для flags — Py_PRINT_RAW; если задан, записывается str() объекта вместо repr(). Возвращает 0 при успехе или -1 при ошибке; будет установлено соответствующее исключение.

int PyFile_WriteString(const char *s, PyObject *p)
Часть Стабильной ABI.

Записать строку s в объект файла p. Возвращает 0 при успехе или -1 при ошибке; будет установлено соответствующее исключение.

© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/c-api/file.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API