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()
方法的对象。如果n为0
,则只读取一行,而不考虑行的长度。如果n大于0
,则将从文件中读取不超过n个字节;可以返回部分行。在这两种情况下,如果立即到达文件的结尾,则返回一个空字符串。然而,如果n小于0
,则读取一行而不考虑长度,但是如果到达文件的结尾,则引发EOFError
立即。