หัวข้อ: 5 วิธีในการแสดงรายการไฟล์ใน Directory ของ Python
Python นับเป็นหนึ่งในภาษาการเขียนโปรแกรมที่ได้รับความนิยมอย่างกว้างขวาง ด้วยความสามารถในการทำงานที่หลากหลาย ทั้งง่ายแก่การเรียนรู้ ด้วยลักษณะของภาษาที่อ่านง่ายและการจัดการแบบ object-oriented ทำให้ Python นั้นได้รับใจของนักพัฒนาซอฟต์แวร์ นักวิจัย และนักศึกษาอย่างล้นหลาม หนึ่งในกิจกรรมพื้นฐานที่ผู้ใช้ Python มักต้องประสบคือการจัดการกับไฟล์และ directory ในคอมพิวเตอร์ ในบทความนี้ เราจะพูดถึง 5 วิธีที่แสดงรายการไฟล์ใน directory ผ่านสคริปต์ Python พร้อมทั้งข้อดี ข้อเสีย และ usecase เฉพาะกิจที่เหมาะสมกับแต่ละวิธี จะรับประกันได้ว่าผู้อ่านจะสามารถนำไปปรับใช้ได้อย่างเหมาะสมและมีประสิทธิภาพในการทำงานหรือการศึกษาต่อไป
วิธีง่ายและโดยตรงในการแสดงรายการไฟล์คือการใช้ฟังก์ชัน `os.listdir()` จากโมดูล `os` ซึ่งจะคืนค่าเป็น list ของไฟล์และ directory ที่อยู่ใน directory ที่ระบุ
import os
# Directory ที่ต้องการแสดงรายการไฟล์
directory = '/path/to/directory'
# แสดงรายการไฟล์
files = os.listdir(directory)
print(files)
ข้อดีของวิธีนี้คือ ง่ายและใช้งานได้อย่างรวดเร็ว ข้อเสียคือ จะไม่สามารถแยกแยะระหว่างไฟล์กับ directory ได้ เว้นเสียแต่ว่าผู้ใช้จะดำเนินการตรวจสอบเพิ่มเติม
Python 3.5 เป็นต้นมาได้นำเสนอ `os.scandir()` และ `pathlib.Path.iterdir()` เป็นวิธีที่มีประสิทธิภาพมากขึ้นในการเรียกดูไฟล์ เพราะมันอ่านข้อมูลเฉพาะที่จำเป็น ทำให้เร็วกว่าการเรียก `os.listdir()` แล้วทำการตรวจสอบประเภทเพิ่มเติม
import os
from pathlib import Path
# ใช้ os.scandir()
with os.scandir(directory) as entries:
for entry in entries:
print(entry.name)
# ใช้ pathlib.Path.iterdir()
path = Path(directory)
for entry in path.iterdir():
print(entry.name)
ข้อดีของวิธีนี้คือมีประสิทธิภาพสูงกว่าเนื่องจากไม่จำเป็นต้องดึงข้อมูลทั้งหมดมา เพียงแต่ดึงเฉพาะที่ต้องการ
โมดูล `glob` ให้วิธีการใช้งานที่สะดวกในการค้นหาไฟล์ตาม pattern หรือ wildcard
import glob
# ไฟล์ทั้งหมดใน directory ที่มีนามสกุล .txt
txt_files = glob.glob('/path/to/directory/*.txt')
print(txt_files)
ข้อดีคือ `glob` สามารถค้นหาไฟล์ตาม pattern ที่กำหนดได้อย่างสะดวก ส่วนข้อเสียคือ ประสิทธิภาพอาจไม่ดีเท่าการใช้ `os.scandir()` หรือ `pathlib.Path.iterdir()` และยังไม่สามารถครอบคลุมทุกรูปแบบการใช้งานได้
`os.walk()` เป็นฟังก์ชันที่ทรงพลังสำหรับการเดินผ่าน directory tree และจะส่งกลับ tuple ของ directory path, list ของ directory ภายใน และ list ของไฟล์ภายใน directory path นั้น
import os
for dirpath, dirnames, filenames in os.walk(directory):
# สิ่งที่สามารถทำได้ในนี้มีมากมาย เช่น
# - ลิสต์ directory ย่อย
# - พิมพ์เส้นทางไฟล์ทั้งหมด
# - กำหนด action กับไฟล์แต่ละตัวที่พบ
pass
ข้อดีคือ `os.walk()` ให้ความสามารถในการควบคุมการเดินผ่าน directory tree ได้อย่างละเอียด ข้อเสียคือมันอาจจะช้ากว่าวิธีอื่น ๆ เมื่อต้องการแค่ลิสต์ไฟล์เท่านั้น
สำหรับโปรแกรมเมอร์ที่ชอบวิธีการที่มีความหมายมากขึ้น `pathlib` เป็นทางเลือกใหม่ที่น่าสนใจในการทำงานกับไฟล์และ paths ใน Python แนววิธีเชิง Object-Oriented
from pathlib import Path
# แสดงรายการไฟล์ด้วย Pathlib
path = Path(directory)
for file_path in path.glob('*'):
print(file_path.name)
ข้อดีคือความสะดวกในการใช้งานและการอ่านได้ง่าย ข้อเสียคืออาจจะมีการใช้เมมโมรี่สูงกว่าเมื่อเทียบกับฟังก์ชันอื่น ๆ
การเลือกวิธีในการแสดงรายการไฟล์ใน directory ควรขึ้นอยู่กับ usecase ของเรา ทั้งประสิทธิภาพ คุณภาพของ code และความสะดวกในการใช้งาน หวังว่าผู้อ่านจะสามารถนำหลักการจากบทความนี้ไปปรับใช้ในโปรเจ็กต์หรือการเรียนรู้การเขียนโปรแกรมได้อย่างมีประสิทธิผลและเหมาะสมกับบริบทของตนเอง และนี่คือตัวอย่างภาษา Python ที่ไม่เพียงแต่ใช้สำหรับงานพัฒนาซอฟต์แวร์เท่านั้น แต่ยังเป็นการพัฒนาทักษะทางด้านการคิดเชิงวิเคราะห์ที่สำคัญสำหรับการศึกษาต่อไปในทุกสาขาวิชา ไม่ว่าจะเป็นวิทยาการคอมพิวเตอร์ คณิตศาสตร์ หรือแม้แต่ภาษาศาสตร์ ทั้งหมดนี้ล้วนเป็นส่วนหนึ่งของการศึกษาที่เราส่งเสริมที่ Expert-Programming-Tutor (EPT) เพื่อปูทางสู่อนาคตที่มั่นคงในโลกของเทคโนโลยีและนวัตกรรม.
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
Tag ที่น่าสนใจ: python การจัดการไฟล์ os.listdir os.scandir pathlib.path glob.glob os.walk ขั้นตอนการเรียกดูไฟล์ การจัดการ_directory การค้นหาไฟล์ การแสดงรายการไฟล์ การทำงานกับ_paths วิธีแสดงรายการไฟล์ อ่านไฟล์ใน_python
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com