ใน Python 3.5 และใหม่กว่าให้ใช้**/ฟังก์ชันการเรียกซ้ำใหม่:
configfiles = glob.glob('C:/Users/sam/Desktop/file1/**/*.txt', recursive=True)
เมื่อrecursiveตั้งค่าแล้ว**ตามด้วยตัวคั่นเส้นทางตรงกับไดเร็กทอรีย่อย 0 หรือมากกว่า
ใน Python เวอร์ชันก่อนหน้าglob.glob()ไม่สามารถแสดงรายการไฟล์ในไดเร็กทอรีย่อยแบบวนซ้ำได้
ในกรณีนี้ฉันจะใช้os.walk()ร่วมกับfnmatch.filter()แทน:
import os
import fnmatch
path = 'C:/Users/sam/Desktop/file1'
configfiles = [os.path.join(dirpath, f)
for dirpath, dirnames, files in os.walk(path)
for f in fnmatch.filter(files, '*.txt')]
สิ่งนี้จะนำไดเรกทอรีของคุณแบบวนซ้ำและส่งคืนชื่อพา ธ สัมบูรณ์ทั้งหมดไปยัง.txtไฟล์ที่ตรงกัน ในกรณีเฉพาะนี้fnmatch.filter()อาจใช้งานมากเกินไปคุณสามารถใช้การ.endswith()ทดสอบ:
import os
path = 'C:/Users/sam/Desktop/file1'
configfiles = [os.path.join(dirpath, f)
for dirpath, dirnames, files in os.walk(path)
for f in files if f.endswith('.txt')]