นับจำนวนไฟล์ด้วย Python

การนับจำนวนไฟล์ด้วยภาษา Python ลำดับแรก ให้อิมพอร์ตไลบรารี glob เข้ามาในโปรเจ็กต์ก่อน แล้วเรียกใช้เมธอด glob1() ซึ่งต้องการพารามิเตอร์ 2 ตัว มีรูปแบบการใช้งานดังนี้

glob.glob1(dirname, pattern)
  • dirname คือชื่อไดเร็คทอรีเป้าหมาย (เช่น “files”)
  • pattern คือรูปแบบไฟล์ที่ต้องการตรวจสอบ (เช่น “*.docx”)
import glob
     
files = glob.glob1("files","*.*")
print(files)
  • บรรทัดที่ 1 อิมพอร์ตไลบรารี glob
  • บรรทัดที่ 3 เรียกใช้เมธอด glob1() โดยให้ตรวจสอบที่ไดเร็คทอรี files (ถ้าต้องการตรวจสอบไดเร็คทอรีปัจจุบันให้กำหนดค่าว่าง "") และให้ตรวจไฟล์ทุกประเภท ("*.*")
  • บรรทัดที่ 4 ให้แสดงรายการไฟล์ออกมา

ไดเร็คทอรีเป้าหมายมีไฟล์อยู่ 3 ไฟล์

ผลลัพธ์ ได้รายการไฟล์ทั้งหมดที่มีอยู่ในไดเร็คทอรีปลายทาง

[‘file2.rtf’, ‘file3.txt’, ‘file4.rar’]

ถ้าต้องการนับจำนวนไฟล์ ให้ใช้ฟังก์ชัน len()

import glob

files = glob.glob1("files","*.*")
print(len(files))

3

หรือจะใช้เมธอด glob() ก็ได้ ดังตัวอย่าง

import glob

files = glob.glob("*.*")
print(files)
print("มีไฟล์ทั้งหมด : %s ไฟล์" % len(files))
  • บรรทัดที่ 3 เรียกใช้เมธอด glob() โดยระบุอากิวเมนต์เป็น "*.*" หมายความว่าให้ตรวจสอบทุกไฟล์ในไดเร็คทอรีปัจจุบัน

ไดเร็คทอรีปัจจุบัน มีไฟล์แค่ 2 ไฟล์

ผลลัพธ์

[‘file1.txt’, ‘main.py’]
มีไฟล์ทั้งหมด : 2 ไฟล์

ถ้าต้องการระบุไดเร็คทอรีปลายทาง ก็สามารถทำได้เช่นกัน

import glob

files = glob.glob("files/*.*")
print(files)
print("มีไฟล์ทั้งหมด : %s ไฟล์" % len(files))
  • บรรทัดที่ 3 ให้ตรวจสอบไฟล์ทุกชนิดในไดเร็คทอรี files

ไดเร็คทอรี files มีไฟล์อยู่ 3 ไฟล์

ผลลัพธ์

[‘files\file2.rtf’, ‘files\file3.txt’, ‘files\file4.rar’]
มีไฟล์ทั้งหมด : 3 ไฟล์

ตรวจสอบไฟล์แบบ recursive

ถ้าต้องการตรวจสอบไฟล์แบบ recursive คือให้ตรวจสอบไฟล์ในไดเร็คทอรีย่อยลงไปด้วย ให้กำหนดอากิวเมนต์ในรูปแบบดังนี้

glob.glob("**/*.*", recursive=True) หรือ glob.glob("dirname/**/*.*", recursive=True)

import glob

files = glob.glob("**/*.*", recursive=True)
print(files)
print("มีไฟล์ทั้งหมด : %s ไฟล์" % len(files))
  • บรรทัดที่ 3 กำหนดอากิวเมนต์ตัวแรกเป็น "**/*.*" หมายถึง ให้ตรวจสอบทุกไฟล์ที่อยู่ในไดเร็คทอรีปัจจุบันและไดเร็คทอรีย่อยลงไปทุกระดับ

ผลลัพธ์

[‘file1.txt’, ‘main.py’, ‘files\file2.rtf’, ‘files\file3.txt’, ‘files\file4.rar’, ‘files\xx\file5.txt’, ‘files\xx\file6.vsdx’, ‘files\xx\file7.rtf’, ‘files\xx\file8.txt’, ‘files\xx\ee\file10.rtf’, ‘files\xx\ee\file11.txt’, ‘files\xx\ee\file9.txt’]
มีไฟล์ทั้งหมด : 12 ไฟล์

import glob

files = glob.glob("files/**/*.*", recursive=True)
print(files)
print("มีไฟล์ทั้งหมด : %s ไฟล์" % len(files))
  • บรรทัดที่ 3 กำหนดอากิวเมนต์ตัวแรกเป็น "files/**/*.*" หมายถึง ให้ตรวจสอบทุกไฟล์ที่อยู่ในไดเร็คทอรี files และไดเร็คทอรีย่อยลงไปทุกระดับ

ผลลัพธ์

[‘files\file2.rtf’, ‘files\file3.txt’, ‘files\file4.rar’, ‘files\xx\file5.txt’, ‘files\xx\file6.vsdx’, ‘files\xx\file7.rtf’, ‘files\xx\file8.txt’, ‘files\xx\ee\file10.rtf’, ‘files\xx\ee\file11.txt’, ‘files\xx\ee\file9.txt’]
มีไฟล์ทั้งหมด : 10 ไฟล์