这些 API 是用于内置文件对象的 Python 2 C API 的最小仿真,使用依赖缓冲 I/O (
FILE
*
) 支持来自 C 标准库。在 Python 3,文件和流使用新
io
模块,其在 OS 低级无缓冲 I/O 之上定义了几个层。下文描述的函数是这些新 API 之上的方便 C 包裹器,且主要意味着解释器报告的内部错误;建议第 3 方代码访问
io
API 代之。
Create a Python file object from the file descriptor of an already opened file
fd
。自变量
name
,
encoding
,
errors
and
newline
可以是
NULL
to use the defaults;
buffering
可以是
-1
to use the default.
name
is ignored and kept for backward compatibility. Return
NULL
on failure. For a more comprehensive description of the arguments, please refer to the
io.open()
function documentation.
警告
Since Python streams have their own buffering layer, mixing them with OS-level file descriptors can produce various issues (such as unexpected ordering of data).
3.2 版改变: 忽略 name 属性。
Return the file descriptor associated with
p
as an
int
. If the object is an integer, its value is returned. If not, the object’s
fileno()
method is called if it exists; the method must return an integer, which is returned as the file descriptor value. Sets an exception and returns
-1
当故障时。
相当于
p.readline([n])
, this function reads one line from the object
p
.
p
may be a file object or any object with a
readline()
方法。若
n
is
0
, exactly one line is read, regardless of the length of the line. If
n
大于
0
, no more than
n
bytes will be read from the file; a partial line can be returned. In both cases, an empty string is returned if the end of the file is reached immediately. If
n
小于
0
, however, one line is read regardless of length, but
EOFError
is raised if the end of the file is reached immediately.
覆写正常行为的
io.open_code()
透过提供的处理程序传递它的参数。
处理程序是函数为类型
PyObject
*
(
*
)
(
PyObject
*
path
,
void
*
userData
)
,其中
path
保证是
PyUnicodeObject
.
userData 指针会被传入挂钩函数。由于可以从不同运行时调用挂钩函数,此指针不应直接引用 Python 状态。
由于此挂钩是在 import 期间有意使用的,避免导入新模块在其执行期间,除非知道它们被冻结或可用于
sys.modules
.
一旦设置挂钩,就无法移除 (或替换) 它,且稍后调用
PyFile_SetOpenCodeHook()
将失败。当故障时,函数返回 -1 并设置异常若解释器已初始化。
调用此函数是安全的先于
Py_Initialize()
.
引发
审计事件
setopencodehook
不带自变量。
3.8 版新增。
写入对象
obj
到文件对象
p
。仅支持的标志对于
flags
is
Py_PRINT_RAW
;若给定,
str()
对象被写入而不是
repr()
。返回
0
当成功时或
-1
当故障时;将设置适当异常。
写入字符串
s
到文件对象
p
。返回
0
当成功时或
-1
当故障时;将设置适当异常。