In this article, you will learn about Python files Input and Output from opening a file to reading it, writing it, closing it and various other file operations.
Python Files Input and Output
A file simply is a collection of data stored in the form of a sequence of bytes in a machine.
It’s a collection of data or information stored in the memory heap that has a name called filename.
There are two types of files in Python.
- Text Files
- Binary Files
Text files in Python
Text files are humanly readable which is displayed in a sequence of characters that can be easily interpreted by humans as it presented in the textual form. Common editors like notepad and others can be used to interpret and edit them.
They can be stored in plain text
(.txt) format or rich text format
Binary files in Python
In binary files data is displayed in some encoded format (using 0’s and 1’s) instead of plain characters. Typically they contain the sequence of bytes.
They are stored in
Any file operation can be broken down into three major steps:
- Opening a file
- Perform different file operations (Read/Write)
- Closing a file
Opening a Python file
The open( ) method
Python has a built-in function
open() to open a file. This function creates a file object.
Here is the syntax.
f = open(file_name, access_mode)
- file_name = name of the file to be opened
- access_mode = mode in which the file is to be opened. It can be read, write etc. By default, it opens the file in reading mode
(r)if not specified explicitly. Here is the list of different modes in which a file can be opened.
|r||Opens a file for reading mode only.|
|w||Opens a file for writing mode only. Creates a new file for writing it the file doesn’t exist.|
|rb||Opens a binary file for reading mode only.|
|wb||Opens a binary file for writing mode only. Creates a new file for writing it the file doesn’t exist.|
|r+||Opens a file for reading and writing mode.|
|rb+||Opens a binary file for reading and writing mode.|
|w+||Opens a file for writing and reading mode. Creates a new file for writing it the file doesn’t exist.|
|wb+||Opens a binary file for writing and reading mode. Creates a new file for writing it the file doesn’t exist.|
|a||Opens a file for appending. Creates a new file for writing it the file doesn’t exist.|
|a+||Opens a file for appending and reading. Creates a new file for reading and writing it the file doesn’t exist.|
|ab||Opens a binary file for appending. Creates a new file for writing it the file doesn’t exist.|
|ab+||Opens a binary file for reading and writing mode. Creates a new file for reading and writing it the file doesn’t exist.|
Let’s create a text file
example.txt and save it in our working directory.
Now here is the code to open the file.
f = open('example.txt','r') #open file from working directory in reading mode fp = open('C:/xyz.txt','r') #open file from any directory
In above example,
f is a pointer variable pointing to the file
To print the content of and details of
example.txt, here is the code.
>>> print (*f) #print the content of file This is a text file. >>> print (f) #ptint mode and encoding <_io.TextIOWrapper name='example.txt' mode='r' encoding='cp1252'>
Note that the default encoding in Windows is
cp1252 whereas in Linux default encoding is
Closing a File in Python
The close( ) method
When we open a file in Python, it must be closed once we finish all the operations because we don’t know when data is flushed. Hence, to free up tied up resources and clean up garbages we must close the file after finishing the operations.
Python automatically closes a file once the object is assigned to another file.
Here is how the file closed in Python.
One method is to just open up files and simply close it using
close( ) method.
f = open('example.txt','r') #file operations f.close()
So after we close the file, we cannot use the file until we open it again.
Another method is to use
try/finally which ensures that after opening the file if file operations raise an exception, the file will be closed properly.
What happens while closing file directly is that of the operations raise an exception, the program will terminate without properly closing the file.
Here is how it is done.
f = open('example.txt','r') try: #file operations finally: f.close()
Note: The file must be opened before
try statement because if open statement itself raises an error, the file won’t be opened to close it.
This method will ensure that, if the file operations somehow raise an error, the file will be closed before the program is terminated.
The with statement
Another method is by using with statement, which simplifies exception handling by encapsulating both initial operations and closing or clean up tasks.
We don’t need close statement because with statement will automatically close the file.
Here is the implementation of with statement.
with open('example.txt') as f: #file operations
Reading and writing files in Python
In Python, we can read the files and write to files by opening up the file in corresponding modes.
The read( ) function
read( ) function is used to read the content of a file after the file is opened in reading mode
( mode = r).
- file = file object
- size = number of characters we want to read. If size is not specified, it will read entire content.
>>> f = open('example.txt','r') >>> f.read(7) #reading 7 characters from example.txt 'This is '
Now the interpreter has read 7 characters of the file and if we again use
read( ) function, it will start reading from 8th character.
>>> f.read(7) #reading next 7 characters ' a text'
The readline( ) function
readline( ) function is used to read the content line by line. It is useful for the large files and we can get access to any line at any moment.
Let’s create a file
test.txt containing multiple lines as:
This is line1. This is line2. This is line3.
Now let’s see how
readline( ) function is used in
>>> x = open('test.txt','r') >>> x.readline() #to display first line This is line1. >>> x.readline(2) #to read second line This is line2. >>> x.readlines() #to read all lines ['This is line1.','This is line2.','This is line3.']
Notice that the each line is separated even while reading all lines.
The write( ) function
write( ) function is used to write into files in Python opened in writing mode.
Opening a file in writing mode will create a new file if the file we attempt to open doesn’t exist.
Let’s assume we don’t have file
xyz.txt. Hence it will be created while we open the file in writing mode.
>>> f = open('xyz.txt','w') #opening in writing mode >>> f.write('Hello \n World') #writing Hello World to the file Hello World >>> f.close() #closing the file
Renaming files in Python
The rename( ) function
rename( ) is used to rename a file in Python. For this we need to import os module first.
Here is the syntax.
import os os.rename(src,dest)
- src = file to be renamed
- dest = new name for the file src
>>> import os >>> #renaming xyz.txt to abc.txt >>> os.rename("xyz.txt","abc.txt")
Current position in Python files
In Python, it is possible to know current position in a file using a function called
tell( ). Similarly, we can change the current position by using the function
>>> f = open('example.txt') #example.txt we created earlier >>> f.read(4) #let's get to the 4th position first This >>> f.tell() #returns the current position 4 >>> f.seek(0,0) #repositioning the position to 0 again
This is how we can get the current position in the file and shift the position as well.
Python File Methods
Here is the tabular presentation of Python file methods.
|Python file methods with description|
Closes a file opened.
Returns an integer descriptor of a file.
Flushes the internal buffer.
Returns true if the file is connected to a tty(-like) device.
Returns the next line in the file.
Reads the first n characters of the file.
Reads a single line in a string or file.
Reads and returns the list of all the lines in the file.
Sets the file’s current position.
Checks if file supports random access. Return true if yes.
Return’s the current position in the file.
Truncates the file’s size. If n is provided, the file is truncated to n bytes else truncated to current location.
Writes the string str in the file.
Write sequence of strings to the file.