ใช้โมดูล tarfile อ่าน/เขียน Tar Files (รองรับ .tar, .tar.gz, .tar.bz2, .tar.xz)
Extract ทั้งหมด (extractall)
import tarfile
with tarfile.open('my_tar.tar.gz') as my_tar:
my_tar.extractall('./my_folder') # ระบุโฟลเดอร์ปลายทาง
# my_tar.close() # Auto-close ด้วย with
Extract ไฟล์เดี่ยว (extract)
import tarfile
with tarfile.open('my_tar.tar.gz') as my_tar:
my_tar.extract('hello.txt', './my_folder') # (member, path)
Extract แบบเลือกเฉพาะ (Filter)
>> import tarfile
>>> with tarfile.open('my_tar.tar.gz') as tf:
... # Extract เฉพาะ .txt
... members = [m for m in tf.getmembers() if m.name.endswith('.txt')]
... tf.extractall('./my_folder', members=members)
อ่านเนื้อหาโดยไม่ Extract (read)
>> with tarfile.open('my_tar.tar.gz') as tf:
... member = tf.getmember('hello.txt')
... content = tf.extractfile(member).read()
... print(content.decode())
รูปแบบ Compression ที่รองรับ
| Suffix | Compression | Mode String |
|---|---|---|
| .tar | None | 'r:' |
| .tar.gz / .tgz | gzip | 'r:gz' |
| .tar.bz2 / .tbz2 | bzip2 | 'r:bz2' |
| .tar.xz / .txz | lzma | 'r:xz' |
tarfile.open() ตรวจจับ Compression อัตโนมัติจากไฟล์ (ไม่ต้องระบุ mode)