Home » excel » python – ValueError: I/O operation on closed file even after giving second arg for open()

python – ValueError: I/O operation on closed file even after giving second arg for open()

Posted by: admin April 23, 2020 Leave a comment

Questions:

I am trying to run this code:

import xlrd
import os.path
import xlsxwriter

with open("arrays.xlsx", "a") as my_file:
    workbook = xlsxwriter.Workbook(my_file)
    worksheet = workbook.add_worksheet()
    array = [1, 2, 3, 4, 5]
    row = 0
    for col, data in enumerate(array):
        worksheet.write_column(row, 0, array)

workbook.close()

But when I run it, I get the following error:

Traceback (most recent call last):
File "C:\Users\hp\Anaconda3\lib\zipfile.py", line 1649, in __del__
self.close()
File "C:\Users\hp\Anaconda3\lib\zipfile.py", line 1666, in close
self.fp.seek(self.start_dir)
ValueError: I/O operation on closed file.
How to&Answers:

With with you don’t actually need to close the file.

The with statement is used to wrap the execution of a block with
methods defined by a context manager (see section With Statement
Context Managers
). This allows common try...except...finally usage
patterns to be encapsulated for convenient reuse.

The implicit finally block which is hidden here will close the file for you. Just remove your explicit close and you will be fine.