Làm cách nào để có danh sách các thư mục trong một thư mục?

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 trong os. scandir(rootdir).

    nếu . is_dir().

        in(. đườ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 trong os.scandir(rootdir).

        nếu . is_dir().

            in(. đườ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

Làm cách nào tôi có thể nhận được danh sách tất cả các thư mục?

Để liệt kê tất cả các tệp trong thư mục hiện tại, hãy nhập như sau. ls -a Điều này liệt kê tất cả các tệp, bao gồm. dấu chấm (. ).
Để hiển thị thông tin chi tiết, gõ như sau. ls -l chương 1. Hồ sơ. .
Để hiển thị thông tin chi tiết về một thư mục, gõ như sau. ls -d -l

Làm cách nào tôi có thể nhận danh sách tất cả các thư mục con và tệp có trong một thư mục bằng PHP?

Để kiểm tra xem thư mục hoặc tệp có đang được sử dụng hay không, có thể sử dụng hàm is_dir() hoặc is_file() . Hàm scandir là một hàm sẵn có trả về một mảng các tệp và thư mục của một thư mục cụ thể. Nó liệt kê các tệp và thư mục có trong đường dẫn do người dùng chỉ định.