จัดการไฟล์ชั่วคราวใน Python ให้ง่ายและปลอดภัยขึ้นด้วย tempfile
สร้างไฟล์ชั่วคราวด้วย NamedTemporaryFile
เวลาเขียนโปรแกรม เรามักต้องสร้างไฟล์ชั่วคราวขึ้นมาเพื่อเก็บข้อมูลระหว่างประมวลผล หากใช้ NamedTemporaryFile จากโมดูล tempfile ใน Python มันจะช่วยสร้างไฟล์ให้ และที่สำคัญคือเมื่อเราเลิกใช้ ไฟล์นี้จะถูกลบออกไปเองโดยอัตโนมัติ ช่วยให้คอมพิวเตอร์ไม่รกด้วยไฟล์ขยะ
ปัญหาเรื่องไฟล์หายก่อนใช้งานจริง
หลายครั้งที่เราต้องการสร้างไฟล์ชั่วคราวเพื่อส่งต่อให้โปรแกรมอื่นใช้งานต่อ แต่พอเราปิดการทำงานของ NamedTemporaryFile ไฟล์นั้นก็จะหายไปทันที ทำให้โปรแกรมอื่นหาไฟล์ไม่เจอ วิธีแก้แบบเดิมคือการใส่คำสั่ง delete=False เพื่อสั่งไม่ให้มันลบไฟล์ทิ้ง แต่เราก็ต้องมานั่งเขียนโค้ดลบไฟล์เองในภายหลัง ซึ่งดูยุ่งยากและอาจลืมลบไฟล์ทิ้งไว้ในเครื่อง
ทางออกใหม่ใน Python 3.12 ด้วย delete_on_close
ข่าวดีสำหรับคนที่ใช้ Python 3.12 ขึ้นไป เราสามารถใช้คำสั่ง delete_on_close=False แทนได้ วิธีนี้จะช่วยให้เราปิดไฟล์เพื่อส่งต่อไปให้ส่วนอื่นใช้งานได้ตามปกติ แต่เมื่อโปรแกรมจบการทำงาน ไฟล์ชั่วคราวนั้นก็จะถูกลบออกไปเองอัตโนมัติเหมือนเดิม ทำให้โค้ดสะอาดและจัดการไฟล์ได้ง่ายขึ้นมาก
ข้อควรระวังระหว่าง TemporaryFile และ NamedTemporaryFile
บางคนอาจสับสนกับ TemporaryFile ซึ่งเป็นอีกคลาสหนึ่งในโมดูลเดียวกัน ข้อแตกต่างคือ TemporaryFile จะสร้างไฟล์ที่ไม่มีชื่อจริงในระบบเพื่อความปลอดภัย ทำให้คนอื่นเข้าถึงไฟล์ไม่ได้ แต่ในทางกลับกัน เราก็ส่งไฟล์นี้ให้โปรแกรมอื่นใช้งานไม่ได้ด้วย ถ้างานของคุณจำเป็นต้องมีชื่อไฟล์ที่ชัดเจน ให้เลือกใช้ NamedTemporaryFile จะเหมาะกว่า
สรุปสั้น ๆ
การจัดการไฟล์ชั่วคราวด้วยโมดูล tempfile ช่วยให้โค้ดของคุณเป็นระเบียบและลดปัญหาไฟล์ค้างในเครื่อง สำหรับใครที่ใช้ Python 3.12 การเลือกใช้ delete_on_close=False จะช่วยให้การส่งต่อไฟล์ชั่วคราวไปให้ส่วนอื่นของโปรแกรมทำได้สะดวกและปลอดภัยขึ้น โดยไม่ต้องกังวลเรื่องการลบไฟล์ทิ้งเองอีกต่อไป
เรียบเรียงจากข่าวของ Planet Python อ่านข่าวต้นฉบับ ↗