Python tìm một thư mục

Trong bài viết này, chúng ta sẽ xem cách liệt kê tất cả các tệp của một thư mục trong Python. Có nhiều cách để liệt kê các tập tin của một thư mục. Trong bài viết này, chúng tôi sẽ sử dụng bốn phương pháp sau

  • ['profit.txt', 'sales.txt', 'sample.txt']
    6. Trả về danh sách các tệp và thư mục có trong một đường dẫn thư mục đã chỉ định
  • ['profit.txt', 'sales.txt', 'sample.txt']
    7. Đệ quy lấy danh sách tất cả các tệp trong thư mục và thư mục con
  • ['profit.txt', 'sales.txt', 'sample.txt']
    8. Trả về các mục nhập thư mục cùng với thông tin thuộc tính tệp
  • ['profit.txt', 'sales.txt', 'sample.txt']
    9. mô-đun toàn cầu để liệt kê các tệp và thư mục có tên theo một mẫu cụ thể

Mục lục

Cách liệt kê tất cả các tệp của một thư mục

Lấy danh sách các tệp của một thư mục dễ như ăn bánh. Sử dụng các hàm

import os

def get_files(path):
    for file in os.listdir(path):
        if os.path.isfile(os.path.join(path, file)):
            yield file
0 và
import os

def get_files(path):
    for file in os.listdir(path):
        if os.path.isfile(os.path.join(path, file)):
            yield file
1 của mô-đun os để liệt kê tất cả các tệp của một thư mục. Dưới đây là các bước

  1. Nhập mô-đun hệ điều hành

    Mô-đun này giúp chúng tôi làm việc với chức năng phụ thuộc vào hệ điều hành trong Python. Mô-đun os cung cấp các chức năng để tương tác với hệ điều hành

  2. sử dụng hệ điều hành. hàm listdir()

    Hàm

    import os
    
    def get_files(path):
        for file in os.listdir(path):
            if os.path.isfile(os.path.join(path, file)):
                yield file
    2 trả về một danh sách chứa tên của các tệp và thư mục có trong thư mục được cung cấp bởi
    import os
    
    def get_files(path):
        for file in os.listdir(path):
            if os.path.isfile(os.path.join(path, file)):
                yield file
    3

  3. Lặp lại kết quả

    Sử dụng vòng lặp for để lặp lại các tệp được trả về bởi hàm listdir(). Sử dụng vòng lặp for, chúng ta sẽ lặp lại từng tệp được trả về bởi hàm

    import os
    
    def get_files(path):
        for file in os.listdir(path):
            if os.path.isfile(os.path.join(path, file)):
                yield file
    0

  4. Sử dụng hàm isfile()

    Trong mỗi lần lặp vòng lặp, sử dụng hàm

    import os
    
    def get_files(path):
        for file in os.listdir(path):
            if os.path.isfile(os.path.join(path, file)):
                yield file
    5 để kiểm tra xem đường dẫn hiện tại là tệp hay thư mục. Nếu nó là một tập tin, sau đó thêm nó vào danh sách. Hàm này trả về True nếu một đường dẫn đã cho là một tệp. Nếu không, nó trả về Sai

Ví dụ để liệt kê các tệp của một thư mục

Hãy xem cách liệt kê các tệp của thư mục 'tài khoản'.

import os

def get_files(path):
    for file in os.listdir(path):
        if os.path.isfile(os.path.join(path, file)):
            yield file
0 sẽ chỉ liệt kê các tệp trong thư mục hiện tại và bỏ qua các thư mục con

ví dụ 1. Chỉ liệt kê các tệp từ một thư mục

import os

# folder path
dir_path = r'E:\\account\\'

# list to store files
res = []

# Iterate directory
for path in os.listdir(dir_path):
    # check if current path is a file
    if os.path.isfile(os.path.join(dir_path, path)):
        res.append(path)
print(res)

đầu ra

Ở đây chúng tôi có ba tên tập tin

['profit.txt', 'sales.txt', 'sample.txt']

Nếu bạn biết biểu thức trình tạo, bạn có thể làm cho mã nhỏ hơn và đơn giản hơn bằng cách sử dụng hàm trình tạo như bên dưới

biểu thức trình tạo

import os

def get_files(path):
    for file in os.listdir(path):
        if os.path.isfile(os.path.join(path, file)):
            yield file

Sau đó, chỉ cần gọi nó bất cứ khi nào cần thiết

for file in get_files(r'E:\\account\\'):
    print(file)

ví dụ 2. Liệt kê cả tệp và thư mục

Gọi trực tiếp hàm

import os

def get_files(path):
    for file in os.listdir(path):
        if os.path.isfile(os.path.join(path, file)):
            yield file
7 để lấy nội dung của một thư mục

import os

# folder path
dir_path = r'E:\\account\\'

# list file and directories
res = os.listdir(dir_path)
print(res)

đầu ra

Như bạn có thể thấy ở đầu ra, ‘reports_2021’ là một thư mục

['profit.txt', 'reports_2021', 'sales.txt', 'sample.txt']

import os def get_files(path): for file in os.listdir(path): if os.path.isfile(os.path.join(path, file)): yield file8 để liệt kê tất cả các tệp trong thư mục và thư mục con

Hàm trả về một trình tạo tạo một bộ giá trị (current_path, thư mục trong current_path, tệp trong current_path)

Ghi chú. Sử dụng hàm

import os

def get_files(path):
    for file in os.listdir(path):
        if os.path.isfile(os.path.join(path, file)):
            yield file
8, chúng ta có thể liệt kê tất cả các thư mục, thư mục con và tệp trong một thư mục nhất định

Nó là một hàm đệ quy, tôi. e. , mỗi khi trình tạo được gọi, nó sẽ theo dõi đệ quy từng thư mục để nhận danh sách các tệp và thư mục cho đến khi không còn thư mục con nào có sẵn từ thư mục ban đầu

Ví dụ, gọi

for file in get_files(r'E:\\account\\'):
    print(file)
0 sẽ mang lại hai danh sách cho mỗi thư mục mà nó truy cập. Danh sách đầu tiên chứa các tệp và danh sách thứ hai bao gồm các thư mục

Hãy xem ví dụ để liệt kê tất cả các tệp trong thư mục và thư mục con

Thí dụ

from os import walk

# folder path
dir_path = r'E:\\account\\'

# list to store files name
res = []
for (dir_path, dir_names, file_names) in walk(dir_path):
    res.extend(file_names)
print(res)

đầu ra

['profit.txt', 'sales.txt', 'sample.txt', 'december_2021.txt']

Ghi chú. Thêm ngắt bên trong vòng lặp để ngừng tìm kiếm tệp theo cách đệ quy bên trong thư mục con

Thí dụ

from os import walk

# folder path
dir_path = r'E:\\account\\'
res = []
for (dir_path, dir_names, file_names) in walk(dir_path):
    res.extend(file_names)
    # don't look inside any subdirectory
    break
print(res)

for file in get_files(r'E:\\account\\'): print(file)1 để lấy các tập tin của một thư mục

Hàm

for file in get_files(r'E:\\account\\'):
    print(file)
2 trả về các mục nhập thư mục cùng với thông tin thuộc tính tệp, mang lại hiệu suất tốt hơn cho nhiều trường hợp sử dụng phổ biến

Nó trả về một iterator của

for file in get_files(r'E:\\account\\'):
    print(file)
3 đối tượng, chứa tên tệp

Thí dụ

import os

# get all files inside a specific folder
dir_path = r'E:\\account\\'
for path in os.scandir(dir_path):
    if path.is_file():
        print(path.name)

đầu ra

['profit.txt', 'sales.txt', 'sample.txt']
0

Mô-đun Glob để liệt kê các tệp của một thư mục

Mô-đun toàn cầu Python, một phần của Thư viện chuẩn Python, được dùng để tìm các tệp và thư mục có tên theo một mẫu cụ thể

Ví dụ, để lấy tất cả các file của một thư mục, chúng ta sẽ sử dụng mẫu

for file in get_files(r'E:\\account\\'):
    print(file)
4. Ở đây,
for file in get_files(r'E:\\account\\'):
    print(file)
5 có nghĩa là tệp có bất kỳ phần mở rộng nào

Đọc thêm. Python liệt kê các tệp trong một thư mục có phần mở rộng txt

Hãy xem cách liệt kê các tệp từ một thư mục bằng cách sử dụng mô-đun toàn cầu

Thí dụ

['profit.txt', 'sales.txt', 'sample.txt']
1

đầu ra

['profit.txt', 'sales.txt', 'sample.txt']
2

Ghi chú. Nếu bạn muốn liệt kê các tệp từ thư mục con, hãy đặt thuộc tính

for file in get_files(r'E:\\account\\'):
    print(file)
6 thành True

Thí dụ

['profit.txt', 'sales.txt', 'sample.txt']
3

đầu ra

['profit.txt', 'sales.txt', 'sample.txt']
4

Mô-đun Pathlib để liệt kê các tệp của một thư mục

Từ Python 3. 4 trở đi, chúng ta có thể sử dụng mô-đun pathlib, mô-đun này cung cấp trình bao bọc cho hầu hết các chức năng của hệ điều hành