ใน 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')]