«Ошибка: [Ошибка 22] Недопустимый аргумент:» при попытке сохранить отредактированную рабочую книгу с помощью функции save()

#python #python-3.x #xlwt #errno

#python #python-3.x #xlwt #ошибка

Вопрос:

У меня есть файл .xls в том же каталоге, что и мой файл .py. Хотя это работает нормально, если я не перезаписываю существующий файл.

 import xlrd, xlwt
from xlutils.copy import copy

rb2=xlrd.open_workbook("TEST_info.xls",on_demand=True)

wb2=copy(rb2)
ws2=wb2.get_sheet(0)
ws2.write(0,1,'DIFFERENt value')
wb2.save("TEST_info.xls")
  

Файл
«C:Python_UserExcel_spreadsheet_projexcel_proj_envScriptsmain.py «,
строка 9, в
wb2.save(«TEST_info.xls «) Файл»C:Python_UserExcel_spreadsheet_projexcel_proj_envlibsite-packagesxlwtWorkbook.py «,
строка 710, в save
doc.save(filename_or_stream, self.get_biff_data()) Файл «C:Python_UserExcel_spreadsheet_projexcel_proj_envlibsite-packagesxlwtCompoundDoc.py «,
строка 262, в сохранении
f = open(file_name_ или_filelike_obj, ‘w b’)
Ошибка ОС: [Ошибка 22] Недопустимый аргумент: ‘TEST_info.xls ‘

Ответ №1:

Согласно документам на https://xlrd.readthedocs.io/en/latest/on_demand.html:

on_demand=True и BIFF version >= 5.0 : open_workbook() загружает глобальные данные и возвращает их без освобождения ресурсов.

Вы должны либо установить on_demand=True значение False so rb2 для освобождения базовых ресурсов, либо вызвать rb2.release_resources() перед попыткой сохранить копию.

Ответ №2:

В итоге я импортировал «ос» и написал:

 if(os.path.exists(file)):
    os.remove(file)
wb.save(file)