File Objects

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

从已经打开的文件* fd 的文件 Descriptors 中创建一个 Python 文件对象。参数 name encoding errors newline *可以是NULL以使用默认值; * buffering 可以是 -1 *以使用默认值。 * name *被忽略,并保持向后兼容。失败时返回NULL。有关参数的更全面描述,请参考io.open()函数文档。

Warning

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

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

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

处理程序是PyObject *(*)(PyObject *path, void *userData)类型的函数,其中* path *保证为PyUnicodeObject

由于此钩子是在导入期间有意使用的,因此,除非已知它们已冻结或在sys.modules中可用,否则请避免在其执行期间导入新模块。

一旦设置了钩子,就无法将其删除或更换,以后对PyFile_SetOpenCodeHook()的调用将失败。如果失败,该函数将返回-1 并设置一个异常(如果解释器已初始化)。

可以安全地在Py_Initialize()之前调用此函数。

3.8 版的新Function。

首页