Spec-Zone.ru › Python 3.10

Файловые объекты

Эти API представляют собой минимальную эмуляцию Python 2 C API для встроенных файловых объектов, которые раньше полагались на буферизованный ввод-вывод (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.10/c-api/file.html

Spec-Zone.ru

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