文件对象

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

PyFile_FromFd (int fdconst char  *nameconst char  *mode,int  bufferingconst char  *encoding,const char  *errors,const char  *newline,int  closefd
Return value: New reference.

从已打开文件的文件描述符fd创建一个Python文件对象。参数name, encoding, errorsnewline可以是NULL使用默认值;buffering可以-1使用默认。name被忽略并保留以便向后兼容。返回NULL失败了。有关参数的更全面的描述,请参考io.open()功能文档.

警告

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

在版本3.2中更改:忽视 name属性。

int PyObject_AsFileDescriptorPyObject  *p
返回p作为int。如果对象是整数,则返回其值。如果没有,该对象的fileno()如果存在,则调用该方法;themethod必须返回一个整数,该整数作为文件描述符值返回。设置一个异常并在失败时返回-1
PyObject* PyFile_GetLine PyObject  *p,int  n
Return value: New reference.

相当于 p.readline([n]),这个函数从对象中读取一行p. p可能是文件对象或任何带有readline()方法。如果n0,无论线的长度如何,都会读取一行。如果n大于0,不会超过n字节从文件中读取;可以返回部分行。在这两种情况下,如果立即到达文件末尾,则返回空字符串。但是,如果n小于0,则无论长度如何都会读取一行,但是如果立即到达文件的末尾则EOFError被提示.

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

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

int PyFile_WriteString const char  *s,PyObject  *p
写字符串s到文件对象p。成功时返回0-1失败;将设置适当的例外.

评论被关闭。