Python 3.15: Path.mkdir(parent_mode=…) — ตั้งสิทธิ์โฟลเดอร์กลางทางแยกจากปลายทาง
เวลาสร้าง 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