วิธีเช็กการมีอยู่ของไฟล์ใน Python: ใช้ os, pathlib, glob

1. เหตุผลที่ต้องตรวจสอบการมีอยู่ของไฟล์ใน Python

บทนำ

การตรวจสอบการมีอยู่ของไฟล์เป็นสิ่งจำเป็นเพื่อเพิ่มความเสถียรของโปรแกรม ตัวอย่างเช่น ระหว่างการอ่านหรือเขียนข้อมูล หากไฟล์เป้าหมายไม่มีอยู่ จะเกิดข้อผิดพลาดและการทำงานของโปรแกรมจะถูกหยุดชะงัก ใน Python เราสามารถตรวจสอบการมีอยู่ของไฟล์ได้หลายวิธี แต่การเลือกวิธีที่เหมาะสมตามสถานการณ์เฉพาะเป็นสิ่งสำคัญ ในบทความนี้ เราจะแนะนำวิธีตรวจสอบไฟล์โดยใช้โมดูล os โมดูล pathlib และโมดูล glob พร้อมอธิบายข้อดีของแต่ละวิธี

2. วิธีพื้นฐาน: โมดูล os

วิธีใช้ os.path.exists()

os.path.exists() ใช้สำหรับตรวจสอบว่าเส้นทางที่ระบุมีอยู่ในฐานะไฟล์หรือไดเรกทอรีหรือไม่ ฟังก์ชันนี้จะส่งกลับ True หากมีอยู่ และส่งกลับ False หากไม่มีอยู่
import os

if os.path.exists("example.txt"):
    print("พบไฟล์")
else:
    print("ไม่พบไฟล์")
โค้ดนี้จะตรวจสอบว่า example.txt มีอยู่หรือไม่ และแสดงข้อความตามผลลัพธ์ os.path.exists() เป็นวิธีการแบบอเนกประสงค์ที่สามารถตรวจสอบได้ทั้งไฟล์และไดเรกทอรี

การเลือกใช้ os.path.isfile() และ os.path.isdir()

os.path.exists() ไม่แยกว่าเป็นไฟล์หรือไดเรกทอรี แต่สามารถใช้ os.path.isfile() หรือ os.path.isdir() เพื่อแยกได้ว่าเป้าหมายเป็นไฟล์หรือไดเรกทอรี
if os.path.isfile("example.txt"):
    print("นี่คือไฟล์")
elif os.path.isdir("example.txt"):
    print("นี่คือไดเรกทอรี")
else:
    print("ไม่พบ")
ดังนี้ หลังจากตรวจสอบการมีอยู่ของเป้าหมายแล้ว การแยกว่าเป็นไฟล์หรือไดเรกทอรีจะทำให้สามารถดำเนินการที่ละเอียดขึ้นได้
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. ขั้นสูง:โมดูล pathlib

การใช้เมธอด Path.exists()

pathlib คุณสามารถใช้เมธอด Path.exists() เพื่อตรวจสอบว่าไฟล์หรือไดเรกทอรีมีอยู่หรือไม่ คล้ายกับ os.path.exists() ซึ่งจะคืนค่า True หรือ False แต่โค้ดจะกระชับมากขึ้น。
from pathlib import Path

file_path = Path("example.txt")

if file_path.exists():
    print("พบไฟล์")
else:
    print("ไม่พบไฟล์")
ด้วยวิธีนี้ เราจะจัดการพาธไฟล์เป็นอ็อบเจ็กต์ Path ทำให้โค้ดเป็นเชิงวัตถุและดูแลง่ายขึ้น。

Path.is_file() และ Path.is_dir()

ใน pathlib ก็มีเมธอด is_file() และ is_dir() ให้ใช้งานเช่นกัน ซึ่งช่วยให้แยกแยะได้ง่ายว่าเป็นไฟล์หรือไดเรกทอรี
if file_path.is_file():
    print("นี่คือไฟล์")
elif file_path.is_dir():
    print("นี่คือไดเรกทอรี")
ดังนั้น การใช้ pathlib ไม่เพียงช่วยตรวจสอบการมีอยู่ของไฟล์เท่านั้น แต่ยังช่วยให้ตรวจสอบได้ง่ายว่าเป้าหมายเป็นไฟล์หรือไดเรกทอรี

กรณีใช้งานจริง

pathlib มีประโยชน์เป็นพิเศษในโปรเจ็กต์ที่ต้องจัดการไดเรกทอรีและไฟล์หลายรายการ คุณสามารถเขียนการจัดการพาธที่ซับซ้อนให้เรียบง่ายขึ้น และทำงานด้วยโค้ดเดียวกันได้บนแพลตฟอร์มที่แตกต่างกัน จึงเหมาะอย่างยิ่งสำหรับการพัฒนาข้ามแพลตฟอร์ม

4. การตรวจสอบการมีอยู่ของไฟล์ใน Python: วิธีใช้โมดูล glob

การจับคู่รูปแบบด้วย glob

glob เป็นโมดูลที่สามารถค้นหาไฟล์ตามรูปแบบของชื่อไฟล์หรือพาธได้ จึงสะดวกเมื่อคุณต้องการตรวจสอบไฟล์ที่ตรงตามเงื่อนไขเฉพาะในคราวเดียว โดยเฉพาะอย่างยิ่ง มีประสิทธิภาพในสถานการณ์ที่ต้องจัดการไฟล์จำนวนมาก。
import glob

files = glob.glob('*.txt')

if files:
    print("พบไฟล์ข้อความ")
else:
    print("ไม่พบไฟล์ข้อความ")
โค้ดนี้จะดึงไฟล์ .txt ทั้งหมดที่อยู่ในไดเรกทอรีปัจจุบันมาเป็นรายการ แล้วตรวจสอบว่ามีอยู่หรือไม่ เนื่องจากสามารถค้นหาไฟล์แบบรวดเดียวตามชนิดไฟล์หรือรูปแบบที่กำหนดได้ จึงมีประโยชน์สำหรับการจัดการไฟล์สำรอง เป็นต้น。

สถานการณ์ใช้งานจริง

glob เหมาะสำหรับกรณีที่ต้องจัดการไฟล์หรือโฟลเดอร์จำนวนมาก หรือเมื่อต้องการประมวลผลไฟล์ที่ตรงกับชื่อหรือส่วนขยายไฟล์เฉพาะอย่างมีประสิทธิภาพ ตัวอย่างเช่น เหมาะสำหรับงานที่ต้องตรวจสอบและจัดการไฟล์ล็อกหรือไฟล์ชั่วคราวเป็นประจำ。
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

5. การจัดการไฟล์อย่างปลอดภัยด้วยการจัดการข้อยกเว้น

เพื่อป้องกันข้อผิดพลาดเมื่อไฟล์ไม่มีอยู่ การใช้การจัดการข้อยกเว้นก็เป็นสิ่งสำคัญเช่นกัน ด้วยการใช้ไวยากรณ์try-except คุณสามารถป้องกันไม่ให้การทำงานของโปรแกรมหยุดลงเพราะข้อผิดพลาด และแสดงข้อความแสดงข้อผิดพลาดให้ผู้ใช้ได้
try:
    with open("example.txt") as f:
        print(f.read())
except FileNotFoundError:
    print("ไม่พบไฟล์")
ในโค้ดนี้ เมื่อไฟล์ไม่มีอยู่จะจับFileNotFoundError และแสดงข้อความแสดงข้อผิดพลาดโดยที่โปรแกรมไม่ล่ม ซึ่งช่วยให้ประสบการณ์ของผู้ใช้ดีขึ้นและเพิ่มความเสถียรของโปรแกรม

6. สรุป

ในการตรวจสอบการมีอยู่ของไฟล์ใน Python มีวิธีการหลากหลาย เช่น โมดูล os, โมดูล pathlib, และโมดูล glob เป็นต้น แต่ละวิธีมีข้อดีตามสถานการณ์การใช้งาน และการเลือกใช้ให้เหมาะสมเป็นสิ่งสำคัญ
  • สำหรับการตรวจสอบการมีอยู่แบบง่าย os.path.exists() เหมาะที่สุด
  • หากต้องจัดการพาธที่ซับซ้อนหรือรองรับข้ามแพลตฟอร์ม pathlib ใช้งานสะดวก
  • สำหรับการค้นหาตามรูปแบบที่กำหนด โมดูล glob ได้ผลดี
เมื่อเข้าใจและใช้งานวิธีเหล่านี้อย่างเหมาะสม คุณจะสามารถจัดการไฟล์ด้วย Python ได้อย่างมีประสิทธิภาพและปลอดภัย ขั้นตอนถัดไป ขอแนะนำให้ศึกษาการอ่านและการเขียนไฟล์ การลบ และการคัดลอกต่อไป
年収訴求