openpyxlでエクセルファイルを開いたのちに削除しようとしてもプロセスがファイルをブロックしていて削除できなかった。
Windows環境
- Windows8.1
- Python 3.10.7
- openpyxl 3.0.10
import os
from openpyxl import load_workbook
FNAME = 'sample.xlsx'
# EXCELファイルをオープン
wb = load_workbook ( FNAME, read_only=True )
sheet = wb.active
# 行をイテレーション
for row in sheet.iter_rows() :
# なにか処理
# イテレーションを中断
break
# Workbookオブジェクトを閉じる
wb.close()
# EXCELファイルを削除 --> Win32エラー
os.remove ( FNAME )
根本的な対策はみつからなかった。
イテレーションを中断しないように変更する。
import os
from openpyxl import load_workbook
FNAME = 'sample.xlsx'
# EXCELファイルをオープン
wb = load_workbook ( FNAME, read_only=True )
sheet = wb.active
# 行をイテレーション
is_terminated = False
for row in sheet.iter_rows() :
# これ以上処理がひつようないならば空回しする
if is_terminated is True: continue
# なにか処理
# イテレーションを中断したい
is_terminated = True
# Workbookオブジェクトを閉じる
wb.close()
# EXCELファイルを削除 --> 成功
os.remove ( FNAME )