Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Giải nén file .txt từ zip bằng Python (zipfile)

Module zipfile cho phép lọc và giải nén file theo điều kiện (extension, tên...).

Ví dụ: Chỉ giải nén file .txt

import zipfile

zip_path = 'my_zip_file.zip'
extract_dir = '.'

with zipfile.ZipFile(zip_path, 'r') as my_zip:
    for file_info in my_zip.infolist():
        if file_info.filename.endswith('.txt'):
            my_zip.extract(file_info, extract_dir)
            print(f"Extracted: {file_info.filename}")

Các method hữu ích

  • ZipFile.namelist() — list tên file.
  • ZipFile.infolist() — list ZipInfo (có size, date, compress_type...).
  • extract(member, path) — giải nén 1 file.
  • extractall(path, members=None) — giải nén tất cả hoặc subset.

Bảo mật: Zip Slip vulnerability

Kiểm tra path traversal trước khi extract:

import os

def safe_extract(zip_file, dest_dir):
    dest_dir = os.path.abspath(dest_dir)
    for member in zip_file.infolist():
        member_path = os.path.abspath(os.path.join(dest_dir, member.filename))
        if not member_path.startswith(dest_dir):
            raise Exception(f"Zip Slip attempt: {member.filename}")
        zip_file.extract(member, dest_dir)