Skip to content
Related Articles

Related Articles

How to open a file using the with statement

View Discussion
Improve Article
Save Article
  • Difficulty Level : Easy
  • Last Updated : 13 Sep, 2022
View Discussion
Improve Article
Save Article

The with keyword in Python is used as a context manager. As in any programming language, the usage of resources like file operations or database connections is very common. But these resources are limited in supply. Therefore, the main problem lies in making sure to release these resources after usage. If they are not released, then it will lead to resource leakage and may cause the system to either slow down or crash.

As we know, the open() function is generally used for file handling in Python. But it is a standard practice to use context managers like with keywords to handle files as it will automatically release files once its usage is complete.

Python with open() Syntax:

Syntax: 

with open(file_path, mode, encoding) as file:

        …

file_path: It is the path to the file to open

mode: mode of operation on the file. ex.: read, write etc. (represented by r, w, r+, w+, rb, wb etc.)

encoding: read the file in correct encoding format.

Example 1: Simple Example Using The with Statement

We already have a file name geeksforgeeks.txt in our system, and it has the following data:

geeksforgeeks,txt

Now we will open the file and read the contents of the file using with open() statement:

Python3




with open("geeksforgeeks.txt","r") as gfg_file:
   file_content = gfg_file.read()
   print(file_content)

Output:

GeeksForGeeks is best for DSA

Note: Here we have used mode as “r” to read the data, because the target file has text data. In case we are reading some binary file, we need to use “rb” as the mode.

Example 2: We can also use the with statement to append or write data to the file.

We will append the string “Hello geeks!” to our geeksforgeeks.txt file.

Python3




# appending string to file
with open("geeksforgeeks.txt","a") as gfg_file:
   gfg_file.write("\nHello Geeks!")
     
# reading the file contents
# to verify if successfully appended the data
with open("geeksforgeeks.txt","r") as gfg_file:
    content = gfg_file.read()
    print(content)

Output:

GeeksForGeeks is best for DSA
Hello Geeks!

Note: Here we have used “a” as the mode of opening the file, this is because we want to append to the file data. Instead, if we wanted to overwrite the file data, we would use the “w” mode.

Example 3: Using nested with open statement to open multiple files

How to open a file using the with statement

links.txt

We have defined a links.txt file containing some random links. We will open the geeksforgeeks.txt file mentioned above and append the content of the links file into the geeksforgeeks.txt file.

Python3




# appending string to file
with open("geeksforgeeks.txt", "a") as gfg_file:
    gfg_file.write("\nHello Geeks!")
 
    with open("links.txt", 'r') as links_file:
        lines = links_file.readlines()
 
    gfg_file.writelines(lines)

geeksforgeeks.txt file contents after modification:

How to open a file using the with statement

geeksforgeeks,txt

Here, we can see that the contents of the links.txt file has been added to the geeksforgeeks.txt file after running the script.

Difference of using open() vs with open()

Although the function of using open() and with open() is exactly same but, there are some important differences:

  • Using open() we can use the file handler as long as the file has not been explicitly closed using file_handler.close(), but in case of using with open() context manager, we cannot use a file handler outside the with block. It will raise ValueError: I/O operation on closed file in that case.
  • While using open() we need to explicitly close an opened file instance, else other parts of code may face errors while opening the same file. In with open() the closing of the file is handled by the context manager.
  • Using with open() context statement makes the code more tidy as we can easily separate between code block by difference in indents. In case of open(), we might miss closing the file instance, this may cause memory leaks and other I/O operation errors.

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!