Nhận danh sách tên tệp và thư mục bằng Python.

Kinh doanh

Để nhận danh sách các tên tệp và thư mục (tên thư mục) bằng Python, hãy sử dụng hàm mô-đun os.listdir ().

os.listdir(path=’.’)
Trả về một danh sách chứa các tên mục nhập trong thư mục được chỉ định bởi đường dẫn.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

Mô-đun hệ điều hành được bao gồm trong thư viện tiêu chuẩn và không cần cài đặt. Tuy nhiên, “nhập khẩu” là bắt buộc.

Thông tin sau được cung cấp ở đây.

  • Nhận danh sách cả tên tệp và thư mục.
  • Chỉ lấy danh sách tên tệp
  • Chỉ lấy danh sách tên thư mục

Sau đây là một ví dụ về cấu trúc tệp (thư mục).

.
└── testdir
    ├── dir1
    ├── dir2
    ├── file1
    ├── file2.txt
    └── file3.jpg

Ngoài os.listdir (), bạn cũng có thể sử dụng mô-đun global để lấy danh sách các tên tệp và thư mục (tên thư mục). cầu cho phép bạn chỉ định các điều kiện bằng cách sử dụng ký tự đại diện (*), v.v. và bao gồm đệ quy các thư mục con.

Trong Python 3.4 trở lên, cũng có thể lấy danh sách các tệp và thư mục bằng cách sử dụng mô-đun pathlib, mô-đun này có thể thao tác các đường dẫn dưới dạng đối tượng. Giống như các hình cầu ở trên, nó cũng có thể được sử dụng theo điều kiện và đệ quy.

Nhận danh sách cả tên tệp và thư mục.

Nếu bạn sử dụng os.listdir (), nó sẽ trả về một danh sách gồm cả tên tệp và thư mục.

import os

path = "./testdir"

files = os.listdir(path)
print(type(files))  # <class 'list'>
print(files)        # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']

Những gì bạn nhận được là một danh sách các chuỗi đường dẫn.

Chỉ lấy danh sách tên tệp

Nếu bạn muốn nhận danh sách chỉ tên tệp, hãy sử dụng hàm os.path.isfile () để xác định xem đường dẫn có phải là tệp hay không. chỉ truyền tên tệp vì đối số của hàm os.path.isfile () sẽ không hoạt động, vì vậy hãy chuyển đường dẫn đầy đủ như hình dưới đây.
os.path.isfile(os.path.join(path, f))

files = os.listdir(path)
files_file = [f for f in files if os.path.isfile(os.path.join(path, f))]
print(files_file)   # ['file1', 'file2.txt', 'file3.jpg']

Chỉ lấy danh sách tên thư mục

Nếu bạn chỉ muốn lấy danh sách tên thư mục, hãy sử dụng os.path.isdir () theo cách tương tự.

files = os.listdir(path)
files_dir = [f for f in files if os.path.isdir(os.path.join(path, f))]
print(files_dir)    # ['dir1', 'dir2']