Trong Python 3.5 và mới hơn, sử dụng **/
chức năng đệ quy mới :
configfiles = glob.glob('C:/Users/sam/Desktop/file1/**/*.txt', recursive=True)
Khi recursive
được đặt, **
theo sau là dấu phân cách đường dẫn khớp với 0 hoặc nhiều thư mục con.
Trong các phiên bản Python trước, glob.glob()
không thể liệt kê các tệp trong thư mục con một cách đệ quy.
Trong trường hợp đó, tôi sẽ sử dụng os.walk()
kết hợp với 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')]
Thao tác này sẽ duyệt đệ quy các thư mục của bạn và trả về tất cả các tên đường dẫn tuyệt đối cho .txt
các tệp phù hợp . Trong trường hợp cụ thể này, fnmatch.filter()
có thể là quá mức cần thiết, bạn cũng có thể sử dụng một .endswith()
bài kiểm tra:
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')]