0Pricing
Python Academy · บทเรียน

การใช้โกลบและการวนซ้ำ

ค้นหาไฟล์ด้วยรูปแบบ glob

การใช้โกลบและการวนซ้ำ เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

การค้นหาไฟล์

ไลบรารีจัดการเส้นทางช่วยให้แสดงรายการเนื้อหาในไดเรกทอรีและค้นหาไฟล์ที่ตรงกับรูปแบบได้ง่าย เมธอดสำคัญคือ iterdir, glob และ rglob

การเตรียมโครงสร้างตัวอย่าง

เพื่อสำรวจเมธอดเหล่านี้ เราจะสร้างไดเรกทอรีขนาดเล็กที่มีไฟล์อยู่ภายในก่อน การเตรียมนี้ใช้เฉพาะไลบรารีมาตรฐาน

from pathlib import Path

root = Path('sample')
root.mkdir(exist_ok=True)
(root / 'a.txt').write_text('1')
(root / 'b.txt').write_text('2')
(root / 'c.log').write_text('3')
print('created files')

iterdir แสดงรายการเนื้อหา

iterdir() จะส่งคืนรายการแต่ละรายการที่อยู่โดยตรงภายในไดเรกทอรี โดยแต่ละรายการเป็น Path หนึ่งรายการ

from pathlib import Path

root = Path('sample')
for entry in sorted(root.iterdir()):
    print(entry.name)

glob กับรูปแบบ

glob() ค้นหารายการที่ตรงกับรูปแบบสไตล์เชลล์ อักขระแทน * จะจับชุดอักขระจำนวนเท่าใดก็ได้

from pathlib import Path

root = Path('sample')
for txt in sorted(root.glob('*.txt')):
    print(txt.name)

อักขระแทนแบบหนึ่งอักขระ

อักขระแทน ? จะจับอักขระได้พอดีหนึ่งตัว เหมาะสำหรับชื่อที่มีความกว้างคงที่

from pathlib import Path

root = Path('sample')
for m in sorted(root.glob('?.txt')):
    print(m.name)

ช่วงอักขระ

วงเล็บเหลี่ยมจะจับอักขระหนึ่งตัวจากชุดหรือช่วงที่กำหนด เช่นเดียวกับการใช้รูปแบบค้นหาในเชลล์

from pathlib import Path

root = Path('sample')
for m in sorted(root.glob('[ab].txt')):
    print(m.name)

glob แบบเวียนเกิดด้วย rglob

rglob() ค้นหาในไดเรกทอรีและไดเรกทอรีย่อยทั้งหมด ซึ่งเทียบเท่ากับ glob('**/pattern')

from pathlib import Path

root = Path('sample')
(root / 'nested').mkdir(exist_ok=True)
(root / 'nested' / 'deep.txt').write_text('x')
for m in sorted(root.rglob('*.txt')):
    print(m)

การนับรายการที่ตรงกัน

ผลลัพธ์จาก glob เป็นตัววนซ้ำ ให้ครอบผลลัพธ์ด้วย list() เพื่อ นับจำนวนหรือนำรายการที่ตรงกันกลับมาใช้ซ้ำ

from pathlib import Path

root = Path('sample')
txts = list(root.rglob('*.txt'))
print('found', len(txts), 'text files')

การกรองระหว่างการวนซ้ำ

ใช้การค้นหาด้วย glob ร่วมกับการตรวจสอบ is_file หรือ is_dir เพื่อกรองผลลัพธ์ได้อย่างแม่นยำ

from pathlib import Path

root = Path('sample')
files = [p for p in root.iterdir() if p.is_file()]
for f in sorted(files):
    print(f.name)

การประมวลผลไฟล์ที่ค้นพบ

เมื่อได้รายการที่ตรงกันแล้ว คุณสามารถอ่านไฟล์แต่ละไฟล์ได้ ในที่นี้เราจะรวมเนื้อหาของไฟล์ข้อความทุกไฟล์ในโครงสร้างดังกล่าว

from pathlib import Path

root = Path('sample')
total = 0
for p in root.rglob('*.txt'):
    text = p.read_text().strip()
    if text.isdigit():
        total += int(text)
print('total:', total)

การเรียงลำดับผลลัพธ์จาก glob

glob ไม่รับประกันลำดับใดเป็นพิเศษ ให้ครอบผลลัพธ์ด้วย sorted() เมื่อต้องการผลลัพธ์ที่มีลำดับแน่นอน เช่น เมื่อต้องสร้างรายงาน

from pathlib import Path

root = Path('sample')
for p in sorted(root.glob('*'), key=lambda x: x.name):
    print(p.name)

ตรวจสอบอย่างรวดเร็ว

glob และ rglob แตกต่างกันอย่างไร?

สรุปทบทวน

คุณได้เรียนรู้วิธีค้นหาไฟล์ด้วยรูปแบบ glob

  • iterdir แสดงรายการเนื้อหาโดยตรง
  • glob ค้นหารายการที่ตรงกับรูปแบบ (*, ?, [...])
  • rglob ค้นหาแบบเวียนเกิด
  • ใช้การค้นหาด้วย glob ร่วมกับตัวกรอง is_file/is_dir แล้วอ่านรายการที่ตรงกัน

คำถามที่พบบ่อย

บทเรียน “การใช้โกลบและการวนซ้ำ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การใช้โกลบและการวนซ้ำ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การใช้โกลบและการวนซ้ำ”

ค้นหาไฟล์ด้วยรูปแบบ glob คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การใช้โกลบและการวนซ้ำ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ออบเจกต์ Path
  2. การอ่านและเขียนไฟล์
  3. การใช้โกลบและการวนซ้ำ
  4. การจัดการพาธ
← กลับไปที่ Python Academy