기본 콘텐츠로 건너뛰기

추천 가젯

리액트 + 비트(Vite)로 모바일 청첩장 만들기 — 2편

모바일 청첩장 시리즈 2편 · R2 갤러리 & Firebase 방명록 Cloudflare R2 · Functions Firebase Firestore 클라우드플레어 R2로 갤러리 저장하고, Firebase로 방명록 달기 안녕하세요, 병민입니다 🙌 1편에서 전체 흐름을 잡았고, 이번엔 사진 업로드/보관 과 방명록 을 연결합니다. 서버는 따로 없고 Cloudflare Pages 를 쓰고 있으니, Pages Functions (= 워커)로 R2에 사전서명 URL을 만들어주고, 프론트에서 그 URL로 바로 업로드하는 구조예요. 방명록은 Firebase DB로 간단·안전하게! 전체 그림 프론트(React) → /api/r2/upload 로 업로드용 URL 요청 → R2에 파일 PUT 프론트(React) → /api/r2/list 로 목록 요청 → 갤러리 렌더 프론트(React) → Firebase SDK로 방명록 작성/조회 1) R2 버킷 & Pages Functions 준비 Cloudflare 대시보드 > R2 > Create bucket (예: wedding-gallery ) 버킷 > Settings > CORS 에서 사이트 도메인 허용(예: https://*.pages.dev , 커스텀 도메인) Pages 프로젝트 > Settings > Functions 에서 R2 바인딩 추가: ...

파이썬 zipfile 모듈 완전 정복 📦 — ZIP 압축/해제 자동화

파이썬 zipfile 모듈 완전 정복 📦 — ZIP 압축/해제 자동화 zipfile 아이콘

파이썬 zipfile 모듈 완전 정복 📦

zipfile 모듈은 파이썬 표준 라이브러리로, ZIP 압축 파일을 생성, 읽기, 해제할 수 있습니다. 추가 라이브러리 없이 바로 사용 가능하며, 자동화 스크립트, 로그 백업, 배포 패키지 생성 등에 유용합니다.

1) ZIP 파일 생성

import zipfile

# 여러 파일 압축
with zipfile.ZipFile('archive.zip', 'w') as zipf:
    zipf.write('file1.txt')
    zipf.write('file2.txt')

print("archive.zip 생성 완료!")

2) ZIP 파일 해제

import zipfile

with zipfile.ZipFile('archive.zip', 'r') as zipf:
    zipf.extractall('output_folder')  # 모든 파일 해제
print("압축 해제 완료!")

3) ZIP 내부 파일 목록 확인

with zipfile.ZipFile('archive.zip', 'r') as zipf:
    print(zipf.namelist())  # ['file1.txt', 'file2.txt']

4) 압축 레벨 조절

compression: 압축 방식 지정 compresslevel: 압축 강도 (1~9, 숫자가 클수록 압축률 ↑, 속도 ↓)

with zipfile.ZipFile('archive_deflated.zip', 'w', 
                     compression=zipfile.ZIP_DEFLATED, 
                     compresslevel=9) as zipf:
    zipf.write('file1.txt')

5) 주의사항 & 팁

  • ZIP_DEFLATED를 쓰려면 zlib 모듈이 필요합니다(파이썬 기본 포함).
  • 비밀번호 보호는 지원하지 않으니 pyzipper 같은 외부 라이브러리를 활용하세요.
  • 압축 시 상대 경로를 사용하면 불필요한 폴더 구조가 포함되는 것을 방지할 수 있습니다.

요약

  • zipfile 모듈로 ZIP 생성/해제를 간단히 처리 가능
  • with 구문으로 자원 관리 자동화
  • 압축 방식과 레벨 지정 가능
  • 비밀번호 기능은 기본 미지원

FAQ

Q1. 비밀번호 압축은 어떻게 하나요?
A. 기본 zipfile은 지원하지 않으며, pyzipper 또는 7zip CLI와 함께 사용하세요.

Q2. 압축하지 않고 묶기만 할 수 있나요?
A. 네, compression=zipfile.ZIP_STORED를 사용하면 됩니다.

댓글

가장 많이 본 글

Icons by Flaticon