การใช้โกลบและการวนซ้ำ
ค้นหาไฟล์ด้วยรูปแบบ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ออบเจกต์ Path
- การอ่านและเขียนไฟล์
- การใช้โกลบและการวนซ้ำ
- การจัดการพาธ