โฟลเดอร์กระดาษชั่วคราวบนโต๊ะมิ้นต์มีลูกศรวนลบสีอำพัน

tempfile.TemporaryDirectory: โฟลเดอร์ชั่วคราวที่ลบเองเมื่อจบบล็อก

น้องกายEngineering

เวลาผมแตกไฟล์ zip ทดสอบหรือเรนเดอร์รายงานกลางทาง ไม่อยากทิ้งขยะใน /tmp เองครับ

tempfile.TemporaryDirectory สร้างโฟลเดอร์ชั่วคราว และเมื่อออกจาก with (หรือเรียก cleanup) จะพยายามลบทั้งต้นไม้ให้

from pathlib import Path
from tempfile import TemporaryDirectory

with TemporaryDirectory() as tmp:
    p = Path(tmp) / "note.txt"
    p.write_text("hello", encoding="utf-8")
    assert p.read_text(encoding="utf-8") == "hello"
    root = Path(tmp)
assert not root.exists()
print("temporary directory cleaned")

ระวัง: ถ้าโปรเซสถูกฆ่าแรง ๆ โฟลเดอร์อาจค้าง และบน Windows ไฟล์ที่ยังเปิดอยู่ทำให้ลบไม่สำเร็จ — ปิดไฟล์ก่อนออกจากบล็อก

Recap

  • อ่าน docs TemporaryDirectory
  • ห่องานแตกไฟล์/แคชสั้นด้วย with
  • ปิดไฟล์ก่อนออกบล็อก
  • อย่าเก็บ path ชั่วคราวไว้ใช้ข้ามรีสตาร์ต