แฟ้มข้อมูลถูกบีบอัดเป็นกล่องเล็กลงบนโต๊ะมิ้นต์ มีลูกศร zstd

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 ให้เครื่องมืออื่นอ่านรู้เรื่อง