Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- PER
- port
- 다이어트
- IOS
- python
- PyQt5
- mssql
- 라즈베리파이
- GIT
- MySQL
- 리눅스
- Linux
- ASP
- Unity
- pandas
- swift
- tensorflow
- MS-SQL
- 날짜
- flutter
- sqlite
- 맛집
- 유니티
- PyQt
- node.js
- javascript
- Excel
- 함수
- urllib
- ubuntu
Archives
아미(아름다운미소)
안전하게 삭제하는 코드 예시 본문
import os
import time
from openpyxl import load_workbook
temp_path = "temp.xlsx"
try:
wb = load_workbook(temp_path)
ws = wb.active
# ... 작업 ...
finally:
# 임시 파일 닫고 삭제 (삭제 실패 시 재시도)
try:
wb.close()
except:
pass
max_retries = 5
retry_delay = 0.5 # 초
for attempt in range(1, max_retries + 1):
try:
os.remove(temp_path)
print(f"✅ 임시 파일 삭제 완료: {temp_path}")
break
except PermissionError as e:
print(f"⚠️ 삭제 실패 (시도 {attempt}/{max_retries}) - 파일이 열려 있거나 사용 중")
time.sleep(retry_delay)
except Exception as e:
print(f"❗ 알 수 없는 오류: {e}")
break
else:
print(f"❌ 최종 실패: 파일이 계속 사용 중입니다. 직접 닫은 후 수동 삭제하세요 → {temp_path}")
방법 1: wb.close() 후 삭제 (가장 확실함)
from openpyxl import load_workbook
import os
import time
import gc
temp_path = "temp.xlsx"
# temp.xlsx를 열어 처리
wb = load_workbook(temp_path)
ws = wb.active
# ... 원하는 작업 수행 ...
# 반드시 닫기
wb.close()
del wb
gc.collect() # 가비지 컬렉션으로 완전 해제
# 잠시 대기 후 삭제 시도 (잠금 해제 지연 방지)
time.sleep(0.5)
# 삭제 시도
try:
os.remove(temp_path)
print("임시 파일 삭제 완료")
except PermissionError:
print("❗ 파일이 열려 있거나 사용 중입니다. 수동으로 닫은 후 다시 시도하세요.")
import os
import time
import gc
file_path = "경로/파일.xlsx"
# 파일 작업 이후 객체 해제
try:
wb.save(file_path)
wb.close() # 명시적으로 닫기
del wb
gc.collect() # 가비지 컬렉션으로 파일 잠금 해제 유도
except Exception as e:
print("파일 저장 오류:", e)
# 삭제 시도 (엑셀이 열려 있으면 실패)
try:
os.remove(file_path)
print("삭제 성공")
except PermissionError:
print("⚠️ 파일이 열려 있어서 삭제할 수 없습니다. 엑셀 창을 닫고 다시 시도하세요.")
'랭귀지 > python' 카테고리의 다른 글
git merge (0) | 2025.06.26 |
---|---|
파일에 최대 5줄까지만 유지하면서 새로운 내용을 추가 (0) | 2025.02.19 |
python for timeout (1) | 2024.11.15 |
minikube ,docker 설치 (0) | 2024.11.13 |
int 아닐때 0 반환 (0) | 2024.10.23 |
Comments