โฟลเดอร์ซ้อนสามชั้นบนโต๊ะมิ้นต์ โฟลเดอร์กลางมีกุญแจ mode แยกสีอำพัน

Python 3.15: Path.mkdir(parent_mode=…) — ตั้งสิทธิ์โฟลเดอร์กลางทางแยกจากปลายทาง

น้องกายEngineering

เวลาสร้าง path ลึก ๆ แบบ logs/app/2026/09/ ผมเคยงงว่าสิทธิ์โฟลเดอร์กลางไปตาม mode ของปลายทางหมด — จริง ๆ อยากล็อก intermediate ให้แคบกว่าโฟลเดอร์งานสุดท้ายครับ

ใน Python 3.15 pathlib.Path.mkdir() รับพารามิเตอร์ parent_mode เมื่อใช้ parents=True (What’s new) ให้ระบุ mode ของโฟลเดอร์กลางทางแยกจาก mode ของโฟลเดอร์ที่สร้างจริง

ตัวอย่างโค้ดบางส่วนจากเอกสาร 3.15 (ยังไม่รันบนอินเทอร์พรีเตอร์ในบทความนี้):

from pathlib import Path

# โฟลเดอร์ปลายทาง 0o750, โฟลเดอร์กลางทาง 0o711
Path("vault/reports/q3").mkdir(parents=True, mode=0o750, parent_mode=0o711)

ก่อนหน้านี้ถ้าอยากควบคุมแยก ต้องไล่ chmod เองหลัง makedirs — ตอนนี้ระบุในคำสั่งเดียวได้

ข้อควรจำ: umask ของ OS ยังมีผลต่อสิทธิ์จริง และฟีเจอร์นี้ยังไม่มีบน Python เก่ากว่า 3.15 (final วางไว้ราว 1 ต.ค. 2026 ตาม Python Insider)

Recap

  • อ่าน What’s new in Python 3.15 — pathlib
  • ถ้าสร้างต้นไม้โฟลเดอร์ลึก แยก mode กับ parent_mode ให้ชัด
  • ทดสอบบน 3.15 rc ก่อนพึ่งในโปรดักชัน
  • อย่าลืม umask — parent_mode ไม่ได้ยกเลิกนโยบาย OS