文件对象 – 具体对象层(Python教程)(参考资料)
文件对象
这些API是内置文件对象的Python 2 C API的最小仿真,它过去依赖于C标准库的缓冲I / O(FILE*
)支持。在Python 3中,文件和流使用新的io
模块,该模块在操作系统的低级unbufferedI / 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)- Return value: New reference.
从已打开文件的文件描述符fd创建一个Python文件对象。参数name, encoding, errors和newline可以是NULL使用默认值;buffering可以-1使用默认。name被忽略并保留以便向后兼容。返回NULL失败了。有关参数的更全面的描述,请参考
io.open()
功能文档.警告
由于Python流有自己的缓冲层,因此将它们与OS级文件描述符混合会产生各种问题(例如数据的意外排序).
在版本3.2中更改:忽视 name属性。
- int
PyObject_AsFileDescriptor
(的PyObject *p) - 返回与p作为
int
。如果对象是整数,则返回其值。如果没有,该对象的fileno()
如果存在,则调用该方法;themethod必须返回一个整数,该整数作为文件描述符值返回。设置一个异常并在失败时返回-1
。
- PyObject*
PyFile_GetLine
( PyObject *p,int n) - Return value: New reference.
相当于
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
;将设置适当的异常.
- int
PyFile_WriteString
( const char *s,PyObject *p) - 写字符串s到文件对象p。成功时返回
0
或-1
失败;将设置适当的例外.
评论被关闭。