os.walk
sử dụng os.listdir
. Đây là docstring cho os.listdir
:
listdir (đường dẫn) -> list_of_strings
Return một danh sách có chứa tên của các mục trong thư mục.
path: path of directory to list
Danh sách theo thứ tự tùy ý. Nó không bao gồm các mục nhập đặc biệt '.' và '..' ngay cả khi chúng xuất hiện trong thư mục.
(nhấn mạnh của tôi).
Tuy nhiên, bạn có thể sử dụng sort
để đảm bảo đơn đặt hàng bạn muốn.
for root, dirs, files in os.walk(path):
for dirname in sorted(dirs):
print(dirname)
(Lưu ý dirnames là chuỗi không ints, vì vậy sorted(dirs)
loại chúng như dây -. Đó là mong muốn cho một lần
Như Alfe và Ciro Santilli chỉ ra, nếu bạn muốn các thư mục được recursed theo thứ tự sắp xếp, sau đó sửa đổi dirs
tại chỗ:
for root, dirs, files in os.walk(path):
dirs.sort()
for dirname in dirs:
print(os.path.join(root, dirname))
Bạn có thể kiểm tra điều này bản thân:
import os
os.chdir('/tmp/tmp')
for dirname in '1 10 11 12 2 20 21 22 3 30 31 32'.split():
try:
os.makedirs(dirname)
except OSError: pass
for root, dirs, files in os.walk('.'):
for dirname in sorted(dirs):
print(dirname)
in
1
10
11
12
2
20
21
22
3
30
31
32
Nếu bạn muốn liệt kê chúng trong sử dụng trật tự số:
for dirname in sorted(dirs, key=int):
Để sắp xếp chuỗi chữ và số, sử dụng natural sort.
Tại sao không 'chạm' các tệp đó hoặc 'mkdir' những thư mục đó (bạn có thể thực hiện tất cả trên một dòng) và tìm hiểu? –
FYI: Trên Linux/ext3, tính năng này hiện giống với 'ls -U'. – JonnyJD