ใช้โมดูล zipfile วนลูปไฟล์ใน Zip ตรวจสอบนามสกุล .txt แล้ว Extract
ตัวอย่าง
import zipfile
my_zip = zipfile.ZipFile('my_zip_file.zip') # เปิดไฟล์ Zip
storage_path = '.' # โฟลเดอร์ปลายทาง
for file in my_zip.namelist():
if my_zip.getinfo(file).filename.endswith('.txt'):
my_zip.extract(file, storage_path) # Extract ถ้าเป็น .txt
my_zip.close()
เวอร์ชันที่ดีกว่า: Context Manager (Auto-close)
import zipfile
with zipfile.ZipFile('my_zip_file.zip') as my_zip:
for file in my_zip.namelist():
if file.endswith('.txt'):
my_zip.extract(file, '.')
Extract ทั้งหมด (All Files)
>> with zipfile.ZipFile('my_zip_file.zip') as zf:
... zf.extractall('.') # Extract ทุกไฟล์ไป Current Directory
Extract เฉพาะไฟล์บางตัว (Pattern)
>> import fnmatch
>>> with zipfile.ZipFile('my_zip_file.zip') as zf:
... for file in zf.namelist():
... if fnmatch.fnmatch(file, '*.txt'):
... zf.extract(file, '.')
ZipFile Methods สำคัญ
| Method | Description |
|---|---|
namelist() | รายชื่อไฟล์ทั้งหมดใน Zip |
getinfo(name) | ข้อมูลไฟล์ (ZipInfo object) |
extract(member, path) | Extract ไฟล์เดียว |
extractall(path, members) | Extract หลายไฟล์/ทั้งหมด |
read(name) | อ่านเนื้อหาไฟล์เป็น bytes (ไม่ extract) |