Объекты файлов¶File Objects
Эти API являются минимальной эмуляцией C API Python 2 для встроенных файловых объектов, которые ранее полагались на поддержку буферизированного ввода-вывода (FILE*) из стандартной библиотеки C. В Python 3 файлы и потоки используют новый модуль io, который определяет несколько уровней поверх низкоуровневого небуферизированного ввода-вывода операционной системы. Описанные ниже функции – это удобные обёртки на C для этих новых API, предназначенные в основном для внутреннего сообщения об ошибках в интерпретаторе; стороннему коду рекомендуется вместо этого использовать API io.
-
PyFile_FromFd(int fd, const char *name, const char *mode, int buffering, const char *encoding, const char *errors, const char *newline, int closefd)¶ Создаёт файловый объект Python из файлового дескриптора уже открытого файла fd. Аргументы name, encoding, errors и newline могут быть NULL для использования значений по умолчанию; buffering может быть -1 для использования значения по умолчанию. name игнорируется и сохраняется для обратной совместимости. Возвращает NULL в случае неудачи. Для более подробного описания аргументов обратитесь к документации функции
io.open().Предупреждение
Поскольку потоки Python имеют собственный уровень буферизации, их смешивание с файловыми дескрипторами ОС может вызвать различные проблемы (например, непредсказуемый порядок данных).
Изменено в версии 3.2: Игнорируется атрибут name.
-
int
PyObject_AsFileDescriptor(PyObject *p)¶ Возвращает файловый дескриптор, связанный с p, в виде
int. Если объект является целым числом, возвращается его значение. Если нет, вызывается методfileno()объекта, если он существует; метод должен вернуть целое число, которое и будет значением файлового дескриптора. В случае ошибки устанавливает исключение и возвращает-1.
-
PyObject*
PyFile_GetLine(PyObject *p, int n)¶ - Возвращаемое значение: новая ссылка.
Эквивалентно
p.readline([n]); эта функция читает одну строку из объекта p. p может быть файловым объектом или любым объектом с методомreadline(). Если n равно0, читается ровно одна строка независимо от её длины. Если n больше0, из файла будет прочитано не более n байт; может быть возвращена неполная строка. В обоих случаях возвращается пустая строка, если конец файла достигнут сразу. Однако, если n меньше0, читается одна строка независимо от длины, но при немедленном достижении конца файла возбуждаетсяEOFError.
-
int
PyFile_WriteObject(PyObject *obj, PyObject *p, int flags)¶ Записывает объект obj в файловый объект p. Единственный поддерживаемый флаг для flags – это
Py_PRINT_RAW; если он указан, записываетсяstr()объекта вместоrepr(). Возвращает0при успехе или-1при ошибке; устанавливается соответствующее исключение.