Python provides us with various functions to perform operations on files. In this article, you will learn how to open and close a file in python. We will also discuss how to use the python with statement to create a context for file handling in python.
Open and Close a File in Python
You can normally open a file in Python using the open()
function. Once the file is open, you can use it for reading and writing. To open a file in Python, you can use the open()
function with the name of the file and the mode in which you want to open the file as the input arguments.
The open()
function is a built-in function that is part of the Python Standard Library, so you don’t need to import it. The basic syntax for using the open()
function in python is as follows:
file_object = open(file_name, mode, encoding)
The open()
function takes in three parameters – file name
, mode
, and encoding
.
Here,
- The
file_object
variable represents the file descriptor returned by the open() function. - The
file_name
parameter takes a string that specifies the name of the file as its input argument. - The
mode
parameter takes a string as its input that specifies the mode in which the file should be opened. - The third parameter
encoding
is used for specifying the encoding format of the file.
Consider an example below on how to open a file named sample.txt
in read-only mode:
f = open('sample.txt', 'r')
The above statement will create a file object, which is assigned to the variable f
. You can use it to read or write the contents of the file. If no mode is provided then python opens the file in read-only mode by default.
Several different modes can be used with the open()
function, including:
'r'
: Reads the file by opening it. This is the default If no mode is given.'w'
: Writes in the file by opening it. The file will be generated if it doesn’t already exist and overwritten if it already exists.'a'
: Write in the file by opening it. The file will be generated if it doesn’t already exist. The new information will be added to the end of the file if it already exists.'r+'
: Opens the file to both read and write privileges.'w+'
: Similar tor+
, this opens the file for writing and reading. If the file does not exist, it will be created. If the file already exists, it will be overwritten.'a+'
: Opens the file for reading and writing. If the file does not exist, it will be created. If the file already exists, the new data will be appended to the end of the file.
Python does not automatically closes an open file. Once you are finished reading or writing to the file, you should close it using the close()
method as shown below.
f.close()
After execution, the above statement will close the file and release any resources that were being used by the file object.
To read the contents of the file, you can use the read()
method for the file object. For example:
data = f.read()
The above statement will read the entire contents of the file into the variable data
as a string.
Let’s look at a program on how to open a file with the open()
function and read its contents:
f = open('sample.txt', 'r')
data = f.read()
print(data)
f.close()
Output:
This is us
The program above creates a file object f
which opens the file sample.txt
in read-only mode, using the open()
function. In a new variable data
, the open file is read using the f.read()
syntax. Lastly, the contents are printed by printing the variable data
.
It is a good practice to use the with
statement when working with files in Python, as the with
statement automatically closes the file when the block of code within the with
statement is completed. You will learn more about it in the next section.
What is Python With Statement?
Resources like files, databases, etc need to be freed after use. For example, we need to close the file after the read or write operation using the close()
method.
Sometimes, if we don’t free the resource explicitly, the resource might get corrupt. For instance, if you write something to a file and don’t close it using the close()
method, the file won’t be saved. Now, it is possible that we forget to write the close() statement to close a file or free a resource in general. This will lead to unwanted errors. This is where python with statements comes in handy.
Python with statement is used to create a context for handling a resource. Using python with statement, you can automatically open and close a python context manager to handle resources like files, databases, etc. The syntax for creating a context using python with statement is as follows.
with create_context(resource_name) as context_name:
#do someting with the resource
#statement1
#statement2
#statement3
Here,
- The
create_context()
function is a function used to open a resource namedresource__name
like a file or a database. - The literal
context_name
is the name given to the current context.
After execution of all the statements in the with block, the resource resource_name
is automatically freed. You can also use the with
statement with custom context managers that define the __enter__
and __exit__
methods, which are called when the with
statement is entered and exited, respectively.
Open a File in Python Using With Open()
Manually opening and closing files can create room for unhandled memory blocks. To avoid such situations, You can use the with
statement in python.
The with statement can be useful for ensuring that resources are properly cleaned up after the use, such as file streams and network connections. In the example below, the with
statement is used to open, read, and automatically close a file:
with open('sample.txt', 'r') as f:
print("File is now open")
Output:
File is now open
In the above example, the open()
function is used to open the file 'sample.txt'
in read-only mode. The file is then passed to the with
statement, which sets up a block of code to be executed. The as
clause assigns the open file to the variable f
.
Once the block of code has been executed, the with
statement automatically closes the file, releasing any system resources that were being used by the file.
Using the with
statement ensures that the file is properly closed, even if an exception is raised during the execution of the block of code. This is useful for ensuring that resources are always properly cleaned up, even in the event of an error.
Read From File Using With Open() In Python
You can open a file using with open
in python and read its contents. In this section, you will learn how to read contents from a file in python.
First, you need to create a file object through which you can open the file. After you open the file using with open()
in python, you need to use the read()
function to read the contents from the file object.
with open('sample.txt', 'r') as f:
content = f.read()
print(content)
Output:
Hello World
In the above example, the open()
function creates a file object f
and opens the file sample.txt
through it. The function is enclosed inside the with
statement to automatically close the file when the execution finishes.
Inside the with
block of code, the read()
function is called on the file object f
to read the contents of the file. Then the contents of the file are printed by printing the variable content
.
Once the block of code has been executed, the with
statement automatically closes the file, releasing any system resources that were being used by the file.
Write to File Using With Open in Python
So far we have learned how to open the file using with open()
in python and how to read the contents inside it. You can also make changes to a file using the open
function in python.
The python write
() method is used to inflict changes inside the file. The write
() method, when invoked on a file object takes a single parameter and does not return any value. Inside the parameter, you can pass a python string or variable as an argument to write into the file.
To write to a file, first, you need to open the file in the same way you did in the last example. Open a file using with open()
, but with writing privileges.
with open('sample.txt', 'w') as f:
In the above example, the text file is opened with the with open()
function and the mode is set to w
, giving us writing privileges.
Once the file is open, you need to call the write()
method on the file object and pass a string argument as the parameter.
with open('sample.txt', 'w') as f:
new_content = f.write("New contents are written")
In the above example, the write
() method is called on the file object f
and a string is passed as an argument to the write
method.
As the mode to open the file is set to w
, the string argument will be overwritten on the file, clearing any contents inside it. To check the newly written contents, open the file once again with the open()
method, and run the read()
method inside it.
In the example below, the program writes to a file using with open()
and then checks the newly written contents by using the read()
method inside a new with open
block:
with open('sample.txt', 'w') as f:
new_content = f.write("New contents are written")
with open('sample.txt', 'r') as f:
content = f.read()
print(content)
The first line of code creates the file object f
and opens the file with writing privilege. We open the file using with open()
in python, and inside the with
block, the write()
method is called on f
and a string is passed as an argument.
Then to check the newly written contents, we once again open the file with reading privileges inside the with open()
block. This time, the read()
method is called on the file object f
. The contents of the file are printed by printing the python variable content
.
Output:
New contents are written
Conclusion
In this article, you have learned how to open a file in python using the with open
and open
functions. You’ve learned how to open and close a file, how to read its contents and how to make changes to it.
To read more about python, you can check this article on python splice string. You might also like this article on python simplehttpserver.
I hope you enjoyed reading this article. Stay tuned for more informative articles.
Happy Learning!
Donate to Avid Python
Dear reader, If you found this article helpful and informative, I would greatly appreciate your support in keeping this blog running by making a donation. Your contributions help us continue creating valuable content for you and others who come across my blog. No matter how big or small, every donation is a way of saying "thank you" and shows that you value the time and effort we put into writing these articles. If you feel that our article has provided value to you, We would be grateful for any amount you choose to donate. Thank you for your support! Best regards, Aditya Founder
If you want to Pay Using UPI, you can also scan the following QR code.