File Objects

这些API是内建文件对象的Python 2 C API的最小仿真,它们依赖于C标准库的缓冲I / O(FILE*)支持。在Python 3中,文件和流使用新的io模块,它在操作系统的低级无缓冲I / O上定义了多个层。下面描述的功能是对这些新API的方便的C包装,主要用于解释器中的内部错误报告;建议第三方代码访问io API。

PyFile_FromFd(int fd, const char *name, const char *mode, int buffering, const char *encoding, const char *errors, const char *newline, int closefd)

从已打开文件的描述器fd创建一个Python文件对象。参数name编码错误换行符可以使用NULL默认值buffers可以使用-1来使用默认值。名称被忽略并保留以便向后兼容。失败时返回NULL有关参数的更全面的描述,请参阅io.open()函数文档。

警告

由于Python流有自己的缓冲层,将它们与OS级文件混合描述器可以产生各种问题(例如数据的意外排序)。

在版本3.2中更改:忽略名称属性。

int PyObject_AsFileDescriptor(PyObject *p)

将与p关联的文件描述器返回为int如果对象是整数,则返回其值。如果不存在,则调用对象的fileno()方法;该方法必须返回一个整数,它作为文件描述器值返回。设置异常,并在失败时返回-1

PyObject* PyFile_GetLine(PyObject *p, int n)
返回值:新引用。

等效于p.readline([n]),此函数从对象p中读取一行。 p可以是文件对象或任何具有readline()方法的对象。如果n0,则只读取一行,而不考虑行的长度。如果n大于0,则将从文件中读取不超过n个字节;可以返回部分行。在这两种情况下,如果立即到达文件的结尾,则返回一个空字符串。然而,如果n小于0,则读取一行而不考虑长度,但是如果到达文件的结尾,则引发EOFError立即。

int PyFile_WriteObject(PyObject *obj, PyObject *p, int flags)

将对象obj写入文件对象p标志的唯一支持标志是Py_PRINT_RAW;如果给定,则写入对象的str(),而不是repr()成功时返回0,失败时返回-1将设置适当的异常。

int PyFile_WriteString(const char *s, PyObject *p)

将字符串s写入文件对象p。返回0成功或-1失败;将设置适当的异常。