File objects
pair: object; file
These APIs are a minimal emulation of the Python 2 C API for built-in file objects, which used to rely on the buffered I/O (FILE*) support from the C standard library. In Python 3, files and streams use the new io module, which defines several layers over the low-level unbuffered I/O of the operating system. The functions described below are convenience C wrappers over these new APIs, and meant mostly for internal error reporting in the interpreter; third-party code is advised to access the io APIs instead.
Create a Python file object from the file descriptor of an already opened file fd. The arguments name, encoding, errors and newline can be
NULLto use the defaults; buffering can be -1 to use the default. name is ignored and kept for backward compatibility. ReturnNULLon failure. For a more comprehensive description of the arguments, please refer to theio.openfunction documentation.[!WARNING] 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 Ignore name attribute.
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~io.IOBase.filenomethod is called if it exists; the method must return an integer, which is returned as the file descriptor value. Sets an exception and returns-1on failure.
single: EOFError (built-in exception)
Equivalent to
p.readline([n]), this function reads one line from the object p. p may be a file object or any object with a~io.IOBase.readlinemethod. If n is0, exactly one line is read, regardless of the length of the line. If n is greater than0, 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 is less than0, however, one line is read regardless of length, butEOFErroris raised if the end of the file is reached immediately.
Read a line from the C stream stream into the buffer buf, like the C standard library function
!fgets, but treating all of\n,\rand\r\nas line endings (seeuniversal newlines). Any\ror\r\nread from the stream is stored in buf as a single\n.At most
n - 1characters are stored in buf; reading stops after a newline has been stored or when the end of the file is reached. The result is always null-terminated. stream should be opened in binary mode, so that the C library does not perform its own newline translation.Return buf on success. Return
NULLif no characters could be read, because stream is at end of file, a read error occurred, or n is less than 2. Like!fgets, this function does not distinguish between end of file and a read error, and it does not set an exception.fobj exists only for backward compatibility and must be
NULL.
Overrides the normal behavior of
io.open_codeto pass its parameter through the provided handler.The handler is a function of type:
Equivalent of
PyObject *(\*)(PyObject *path, void *userData), where path is guaranteed to bePyUnicodeObject.The userData pointer is passed into the hook function. Since hook functions may be called from different runtimes, this pointer should not refer directly to Python state.
As this hook is intentionally used during import, avoid importing new modules during its execution unless they are known to be frozen or available in
sys.modules.Once a hook has been set, it cannot be removed or replaced, and later calls to
PyFile_SetOpenCodeHookwill fail. On failure, the function returns -1 and sets an exception if the interpreter has been initialized.This function is safe to call before
Py_Initialize.setopencodehook "" c.PyFile_SetOpenCodeHook
3.8
Open path with the mode
'rb'. path must be a Pythonstrobject. The behavior of this function may be overridden byPyFile_SetOpenCodeHookto allow for some preprocessing of the text.This is analogous to
io.open_codein Python.On success, this function returns a
strong referenceto a Python file object. On failure, this function returnsNULLwith an exception set.3.8
Similar to
PyFile_OpenCodeObject, but path is a UTF-8 encodedconst char*.3.8
single: Py_PRINT_RAW (C macro)
Write object obj to file object p. The only supported flag for flags is
Py_PRINT_RAW; if given, thestrof the object is written instead of therepr.If obj is
NULL, write the string"<NULL>".Return
0on success or-1on failure; the appropriate exception will be set.
Write string s to file object p. Return
0on success or-1on failure; the appropriate exception will be set.
Soft-deprecated API
These are APIs that were included in Python's C API by mistake. They are documented solely for completeness; use other PyFile* APIs instead.
Use
PyFile_FromFdwith defaults (fd, NULL, "w", -1, NULL, NULL, NULL, 0) instead.3.15
Type of file-like objects used internally at Python startup when
iois not yet available. Use PythonopenorPyFile_FromFdto create file objects instead.3.15
The string literal
"b", used to open files in binary mode. Exposed for backwards compatibility only.next
谢谢你的反馈!