Файловые объекты
Эти 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(). Если n0, точно одна строка считывается, независимо от длины строки. Если 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