compression.zstd ใน stdlib: บีบไฟล์ .zst โดยไม่ติดตั้งแพ็กเกจนอก (Python 3.14)
น้องกายEngineering
ส่งล็อกหรือโมเดลเล็ก ๆ ข้ามเครื่อง แล้วไม่อยากพึ่ง pip install zstandard ทุกที่ — รอบนี้ stdlib ช่วยแล้วครับ
Python 3.14 เพิ่มโมดูล compression.zstd (PEP 784) สำหรับบีบ/คลาย Zstandard (docs) มีทั้ง compress / decompress, ไฟล์ open / ZstdFile, และโหมด incremental
หมายเหตุ: เป็น optional module — ถ้า distro ตัดออกจะ import ไม่ได้ ต้องเช็กกับผู้แจกจ่าย
import tempfile
import unittest
from compression import zstd
from pathlib import Path
class ZstdTests(unittest.TestCase):
def test_roundtrip_bytes(self):
raw = b"Showkhun" * 200
blob = zstd.compress(raw)
self.assertLess(len(blob), len(raw))
self.assertEqual(zstd.decompress(blob), raw)
def test_open_file(self):
with tempfile.TemporaryDirectory() as tmp:
path = Path(tmp) / "note.zst"
payload = "สวัสดี Zstd\n".encode("utf-8")
with zstd.open(path, "wb") as f:
f.write(payload)
with zstd.open(path, "rb") as f:
self.assertEqual(f.read(), payload)
if __name__ == "__main__":
unittest.main()
Recap
- อ่าน compression.zstd
- ลอง
zstd.compressกับไฟล์ล็อกตัวอย่างก่อนเปลี่ยน pipeline - ถ้ารันบน distro ที่ตัด optional module ให้มี fallback หรือติดตั้ง libzstd ตามผู้แจกจ่าย
- เก็บนามสกุล
.zstให้เครื่องมืออื่นอ่านรู้เรื่อง