Python: Liệt kê và thêm tất cả các tệp từ một thư mục vào danh sách

Python

Khám phá quản lý tệp trong Python

Làm việc với các thư mục và tập tin là một công việc phổ biến trong lập trình. Trong Python, có một số phương pháp để liệt kê tất cả các tệp trong một thư mục và lưu trữ chúng trong danh sách để xử lý thêm.

Bài viết này sẽ khám phá những cách hiệu quả để đạt được điều này, cung cấp các ví dụ và giải thích về mã. Cho dù bạn là người mới bắt đầu hay một lập trình viên có kinh nghiệm, những kỹ thuật này sẽ giúp hợp lý hóa các tác vụ quản lý tệp của bạn trong Python.

Yêu cầu Sự miêu tả
os.listdir(directory) Trả về danh sách chứa tên của các mục trong thư mục đã chỉ định.
os.path.isfile(path) Kiểm tra xem đường dẫn đã chỉ định có phải là tệp thông thường hiện có hay không.
os.path.join(path, *paths) Tham gia một hoặc nhiều thành phần đường dẫn một cách thông minh, trả về một đường dẫn duy nhất.
Path(directory).iterdir() Trả về một trình vòng lặp của tất cả các tệp và thư mục con trong thư mục đã chỉ định.
file.is_file() Trả về True nếu đường dẫn là một tệp thông thường hoặc một liên kết tượng trưng đến một tệp.
os.walk(directory) Tạo tên tệp trong cây thư mục, đi từ trên xuống hoặc từ dưới lên.

Tìm hiểu về truyền tải thư mục Python

Các tập lệnh được cung cấp ở trên minh họa các phương pháp khác nhau để liệt kê tất cả các tệp trong một thư mục bằng Python. Kịch bản đầu tiên sử dụng module, là một mô-đun tích hợp trong Python cung cấp cách sử dụng chức năng phụ thuộc vào hệ điều hành. Bằng cách sử dụng , chúng ta có thể nhận được danh sách tất cả các mục trong thư mục đã chỉ định. Sau đó, bằng cách lặp qua các mục này và kiểm tra từng mục bằng , chúng tôi có thể lọc ra các thư mục và chỉ nối các tệp vào danh sách của mình. Kịch bản thứ hai sử dụng pathlib mô-đun, cung cấp cách tiếp cận hướng đối tượng hơn cho các đường dẫn hệ thống tập tin. Bằng cách sử dụng , chúng tôi nhận được một trình vòng lặp của tất cả các mục trong thư mục và bằng cách lọc chúng bằng , chúng tôi chỉ có thể thu thập các tập tin.

Tập lệnh thứ ba được thiết kế để liệt kê tệp toàn diện hơn, bao gồm các tệp trong thư mục con. Nó sử dụng , một trình tạo tạo ra một bộ đường dẫn thư mục, thư mục con và tên tệp cho mỗi thư mục trong cây có gốc tại thư mục đã chỉ định. Điều này cho phép chúng ta duyệt cây thư mục một cách đệ quy và thu thập tất cả tên tệp. Các tập lệnh này thể hiện các cách hiệu quả để xử lý việc truyền tải thư mục trong Python, mang lại cả sự đơn giản với và chức năng nâng cao với . Hiểu các lệnh và phương thức này là rất quan trọng đối với các tác vụ quản lý tệp, đảm bảo rằng các tệp được xác định và xử lý chính xác trong cấu trúc thư mục.

Liệt kê các tệp trong thư mục bằng mô-đun os của Python

Sử dụng mô-đun os để duyệt thư mục

import os

def list_files_os(directory):
    files = []
    for filename in os.listdir(directory):
        if os.path.isfile(os.path.join(directory, filename)):
            files.append(filename)
    return files

# Example usage
directory_path = '/path/to/directory'
files_list = list_files_os(directory_path)
print(files_list)

Tìm nạp nội dung thư mục bằng mô-đun pathlib của Python

Sử dụng mô-đun pathlib để liệt kê tệp

from pathlib import Path

def list_files_pathlib(directory):
    return [str(file) for file in Path(directory).iterdir() if file.is_file()]

# Example usage
directory_path = '/path/to/directory'
files_list = list_files_pathlib(directory_path)
print(files_list)

Danh sách tệp đệ quy với os.walk

Sử dụng os.walk để duyệt thư mục đệ quy

import os

def list_files_recursive(directory):
    files = []
    for dirpath, _, filenames in os.walk(directory):
        for filename in filenames:
            files.append(os.path.join(dirpath, filename))
    return files

# Example usage
directory_path = '/path/to/directory'
files_list = list_files_recursive(directory_path)
print(files_list)

Kỹ thuật liệt kê tệp nâng cao trong Python

Ngoài các phương pháp cơ bản để liệt kê các tập tin trong một thư mục bằng cách sử dụng Và mô-đun, có nhiều kỹ thuật nâng cao hơn có thể được sử dụng cho các nhiệm vụ chuyên biệt. Một phương pháp như vậy là sử dụng mô-đun, tìm tất cả các tên đường dẫn khớp với một mẫu đã chỉ định theo các quy tắc được sử dụng bởi shell Unix. Điều này có thể đặc biệt hữu ích khi liệt kê các tệp có phần mở rộng hoặc mẫu cụ thể. Ví dụ, sử dụng glob.glob('*.txt') sẽ liệt kê tất cả các tập tin văn bản trong thư mục hiện tại. Phương pháp này cung cấp một cách linh hoạt để lọc các tệp dựa trên tên hoặc phần mở rộng của chúng mà không cần phải lặp lại thủ công qua các mục nhập thư mục.

Một kỹ thuật tiên tiến khác là tận dụng mô-đun, cung cấp các chức năng để so sánh tên tệp với các mẫu toàn cầu kiểu Unix. Điều này có thể được sử dụng kết hợp với hoặc để lọc các tập tin dựa trên các mẫu phức tạp hơn. Ví dụ, fnmatch.filter(os.listdir(directory), '*.py') sẽ trả về danh sách tất cả các tệp Python trong thư mục đã chỉ định. Ngoài ra, đối với các tập dữ liệu lớn hơn hoặc các ứng dụng quan trọng về hiệu năng, việc sử dụng từ mô-đun có thể hiệu quả hơn vì nó truy xuất các thuộc tính tệp cùng với tên tệp, làm giảm số lượng lệnh gọi hệ thống. Việc hiểu các kỹ thuật nâng cao này cho phép tạo ra các giải pháp quản lý tệp linh hoạt và mạnh mẽ hơn trong Python.

Câu hỏi thường gặp về Danh sách thư mục trong Python

  1. Làm cách nào để liệt kê tất cả các tệp trong một thư mục và các thư mục con của nó?
  2. Sử dụng duyệt cây thư mục và liệt kê tất cả các tập tin.
  3. Làm cách nào tôi có thể liệt kê các tệp có phần mở rộng cụ thể?
  4. Sử dụng hoặc .
  5. Sự khác biệt giữa Và ?
  6. hiệu quả hơn vì nó truy xuất các thuộc tính tệp cùng với tên tệp.
  7. Tôi có thể liệt kê các tập tin ẩn trong một thư mục không?
  8. Có, sử dụng sẽ liệt kê các tập tin ẩn (những tập tin bắt đầu bằng dấu chấm).
  9. Làm cách nào để loại trừ các thư mục khỏi danh sách?
  10. Sử dụng hoặc với để chỉ lọc các tập tin.
  11. Có thể sắp xếp danh sách các tập tin?
  12. Có, bạn có thể sử dụng chức năng trên danh sách các tập tin.
  13. Làm cách nào tôi có thể xử lý các thư mục lớn một cách hiệu quả?
  14. Sử dụng để có hiệu suất tốt hơn với các thư mục lớn.
  15. Tôi có thể lấy kích thước tập tin và ngày sửa đổi không?
  16. Có, sử dụng hoặc để lấy siêu dữ liệu tập tin.
  17. Những mô-đun nào là tốt nhất để tương thích đa nền tảng?
  18. Các module được khuyến nghị để có khả năng tương thích đa nền tảng tốt hơn.
  19. Làm cách nào để chỉ liệt kê các thư mục?
  20. Sử dụng hoặc để lọc thư mục.

Tóm lại, Python cung cấp nhiều cách để liệt kê các tệp trong một thư mục, từ các phương thức cơ bản bằng cách sử dụng Và mô-đun đến các kỹ thuật nâng cao hơn liên quan đến Và fnmatch. Mỗi phương pháp đều có những ưu điểm riêng, phù hợp với những trường hợp sử dụng khác nhau. Hiểu các kỹ thuật này sẽ nâng cao khả năng xử lý các tác vụ quản lý tệp một cách hiệu quả, đảm bảo rằng bạn có thể liệt kê và xử lý chính xác các tệp theo yêu cầu của ứng dụng.