How to Fix Error - IO.UnsupportedOperation: Not Writable Error in Python

Manav Narula Feb 02, 2024
  1. Fix the io.UnsupportedOperation: not writable Error in Python
  2. Conclusion
How to Fix Error - IO.UnsupportedOperation: Not Writable Error in Python

Python is very efficient in reading and writing data from files. It has a variety of functions to help in file handling.

The basics of file handling involve opening a file using the open() function and reading or writing data based on the file mode.

The open() opens a given file and creates a file object that can be used to perform reading and writing operations on a file.

The file can be opened in different types of modes. By default, it opens the file in read mode.

This tutorial will discuss the io.UnsupportedOperation: not writable error in Python and ways to fix it.

Fix the io.UnsupportedOperation: not writable Error in Python

This error is caused when we try to perform the write operation on a file opened in reading mode. A file opened in read mode can only read the contents.

For example:

with open("sample.txt", "r") as f:
    f.write("Text")

Output:

io.UnsupportedOperation: not writable

Note that in the above example, we open the file in r mode (read) and try to write some data to this file using the write() function, which causes the error.

Remember to open the file in modes that support this operation to solve this. The write (w) or append (a) modes are used to write some data to a file.

The previous contents are truncated if we open the file in w mode. The a mode adds content to the end of the file and preserves the previous data.

For example:

with open("sample.txt", "w") as f:
    f.write("Text")

In the above example, we successfully avoid errors and can write data to the file.

If we want to simultaneously read and write data from a file, we can use the r+b mode. We can perform reading and writing operations in binary mode when the file is opened in this mode.

For example:

with open("sample.txt", "r+b") as f:
    f.write(bytes("Text", "utf-8"))

Note that we write data as bytes since the file is opened in binary mode. The text is encoded as bytes in the utf-8 encoding in the above example.

Alternatively, we can also use the writable() function to check whether we can perform writing operations using the file handle or not. It returns True or False.

See the code below.

with open("sample.txt", "r") as f:
    print(f.writable())

with open("sample.txt", "a") as f:
    print(f.writable())

Output:

False
True

The above example shows that the writable function returns False when the file is opened in r mode and returns True when the file is opened in a mode.

Conclusion

To conclude, we discussed the cause behind the io.UnsupportedOperation: not writable error and how to fix it. We discussed how opening the file in the wrong mode can cause this and what file modes support writing operations.

We also demonstrated the use of the writable function that can be used to check whether a file object can perform writing operations or not.

Author: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Related Article - Python Error