Một giải pháp đơn giản để liệt kê tất cả các thư mục con trong một thư mục là sử dụng hàm os.listdir[]
. Tuy nhiên, điều này trả về danh sách tất cả các tệp và thư mục con trong thư mục gốc. Bạn có thể lọc danh sách được trả về bằng hàm os.path.isdir[]
để chỉ liệt kê các thư mục con
1
2
3
4
5
6
7
8
nhập os
rootdir = 'path/to/dir'
cho tệp trong os. listdir[rootdir].
d = os. đường dẫn. tham gia[rootdir, tệp]
if os. đường dẫn. isdir[d].
in[d]
Tải xuống mã
Bạn cũng có thể dễ dàng mở rộng giải pháp để tìm kiếm trong các thư mục con, như minh họa bên dưới.
1
2
3
4
5
6
7
8
9
10
11
12
nhập os
def listdirs[rootdir]:
cho tệp trong os.listdir[rootdir].
d = os. đường dẫn. tham gia[rootdir, tệp]
nếu os. đường dẫn. isdir[d].
in[d]
listdirs[d]
rootdir = 'path/to/dir'
listdirs[rootdir]
Tải xuống mã
2. Sử dụng chức năng os.scandir[]
Với Python3. 5, bạn có thể sử dụng hàm os.scandir[]
, hàm này mang lại hiệu suất tốt hơn đáng kể so với hàm os.listdir[]
. Nó trả về các mục trong thư mục cùng với thông tin thuộc tính tệp. Để lọc các mục được trả về để loại trừ các tệp, hãy gọi hàm is_dir[]
, hàm này trả về True
nếu mục hiện tại là một thư mục hoặc một liên kết tượng trưng trỏ đến một thư mục
1
2
3
4
5
6
7
nhập os
rootdir = 'path/to/dir'
cho nó trong os. scandir[rootdir].
nếu nó. is_dir[].
in[nó. đường dẫn]
Tải xuống mã
Bạn có thể dễ dàng thực hiện đệ quy mã trên để cho phép tìm kiếm trong các thư mục con.
1
2
3
4
5
6
7
8
9
10
11
nhập os
def listdirs[rootdir]:
cho nó trong os.scandir[rootdir].
nếu nó. is_dir[].
in[nó. đường dẫn]
listdirs[it]
rootdir = 'path/to/dir'
listdirs[rootdir]
Tải xuống mã
3. Sử dụng mô-đun pathlib
Bạn cũng có thể sử dụng mô-đun pathlib
với Python 3. 4 để liệt kê tất cả các thư mục con trong một thư mục. Ý tưởng là gọi hàm os.listdir[]
0, mang lại các đối tượng đường dẫn của nội dung thư mục. Bạn có thể lọc các đối tượng được trả về cho các thư mục hoặc một liên kết tượng trưng trỏ đến một thư mục, sử dụng hàmos.listdir[]
1
1
2
3
4
5
6
7
từ pathlib nhập Đường dẫn
rootdir = 'path/to/dir'
cho đường dẫn trong Đường dẫn[rootdir].iterdir[].
đường dẫn nếu path. is_dir[].
in[đường dẫn]
Tải xuống mã
Đây là phiên bản đệ quy, phiên bản này cũng tìm kiếm trong các thư mục con.
1
2
3
4
5
6
7
8
9
10
11
từ pathlib nhập Đường dẫn
def listdirs[rootdir]:
cho đường dẫn trong Đường dẫn[rootdir].iterdir[].
đường dẫn nếu path. is_dir[].
in[đường dẫn]
listdirs[đường dẫn]
rootdir = 'path/to/dir'
listdirs[rootdir]
Tải xuống mã
4. Sử dụng chức năng os.listdir[]
2
Để tìm kiếm trong các thư mục con, hãy cân nhắc sử dụng hàm os.listdir[]
2. Nó đệ quy mang lại 3-tuple os.listdir[]
4, trong đó os.listdir[]
5 là đường dẫn đến thư mục hiện tại, os.listdir[]
6 là danh sách tên của các thư mục con trong thư mục hiện tại và os.listdir[]
7 liệt kê các tệp thông thường trong thư mục hiện tại
1
2
3
4
5
6
7
nhập os
rootdir = 'path/to/dir'
cho rootdir, dir, files in os.đi bộ[rootdir].
cho thư mục con trong thư mục:
in[os. đường dẫn. tham gia[rootdir, subdir]]
Tải xuống mã
5. Sử dụng mô-đun os.listdir[]
8
Cuối cùng, bạn có thể sử dụng hàm os.listdir[]
9, hàm này trả về một trình vòng lặp trên danh sách tên đường dẫn khớp với mẫu đã chỉ định