class io.FileIO(name, mode='r', closefd=True, opener=None)
FileIO
represents an OS-level file containing bytes data. It implements the RawIOBase
interface (and therefore the IOBase
interface, too).
The name can be one of two things:
- a character string or
bytes
object representing the path to the file which will be opened. In this case closefd must be True (the default) otherwise an error will be raised. - an integer representing the number of an existing OS-level file descriptor to which the resulting
FileIO
object will give access. When the FileIO object is closed this fd will be closed as well, unless closefd is set toFalse
.
The mode can be 'r'
, 'w'
, 'x'
or 'a'
for reading (default), writing, exclusive creation or appending. The file will be created if it doesn’t exist when opened for writing or appending; it will be truncated when opened for writing. FileExistsError
will be raised if it already exists when opened for creating. Opening a file for creating implies writing, so this mode behaves in a similar way to 'w'
. Add a '+'
to the mode to allow simultaneous reading and writing.
The read()
(when called with a positive argument), readinto()
and write()
methods on this class will only make one system call.
A custom opener can be used by passing a callable as opener. The underlying file descriptor for the file object is then obtained by calling opener with (name, flags). opener must return an open file descriptor (passing os.open
as opener results in functionality similar to passing None
).
The newly created file is non-inheritable.
See the open()
built-in function for examples on using the opener parameter.
Changed in version 3.3: The opener parameter was added. The 'x'
mode was added.
Changed in version 3.4: The file is now non-inheritable.
In addition to the attributes and methods from IOBase
and RawIOBase
, FileIO
provides the following data attributes:
-
mode
-
The mode as given in the constructor.
-
name
-
The file name. This is the file descriptor of the file when no name is given in the constructor.
Please login to continue.