Python lấy tất cả hình ảnh trong thư mục và thư mục con

Trong bài đăng này, bạn sẽ tìm hiểu các cách khác nhau để liệt kê các tệp trong một thư mục, sử dụng cả thư viện OS và thư viện Glob

Làm việc với dữ liệu, bạn có thể rơi vào tình huống cần kết hợp các tệp khác nhau hoặc trích xuất dữ liệu từ tệp mới nhất

Mục lục

  • Cấu trúc thư mục mẫu
  • Nhập thư viện OS và Glob
  • Sử dụng chức năng listdir của os để trả về tất cả các tệp trong một thư mục
  • Sử dụng chức năng Walk của os để trả về tất cả các tệp trong một thư mục và tất cả các thư mục con
  • Sử dụng Glob để liệt kê tất cả các tệp trong một thư mục
  • Sử dụng Glob để trả về tất cả các tệp của một loại tệp trong một thư mục
  • Kết hợp dữ liệu với Pandas và Glob
  • Phần kết luận

Cấu trúc thư mục mẫu

Để theo dõi, hãy sử dụng cấu trúc dữ liệu trong hình bên dưới. Mỗi tệp chứa dữ liệu bán hàng cho một tháng khác nhau, như được hiển thị bên dưới

Nhập thư viện OS và Glob

Cả thư viện OS và Glob đều được cài đặt theo mặc định. Để nhập chúng, chỉ cần viết

import os
import glob

Sử dụng chức năng listdir của os để trả về tất cả các tệp trong một thư mục

Hàm listdir của hệ điều hành tạo danh sách tất cả các tệp [và thư mục] trong một thư mục

Để sử dụng điều này, chỉ cần chuyển thư mục làm đối số

Để làm theo, hãy tải các tệp mẫu vào một thư mục. Truyền đường dẫn đến thư mục Files vào đối số của hàm listdir

files = os.listdir[file_path]

print[files]
# Returns
# ['November.xlsx', 'October.xlsx', 'Other Files']

Sử dụng chức năng Walk của os để trả về tất cả các tệp trong một thư mục và tất cả các thư mục con

Nếu bạn muốn liệt kê tất cả các tệp trong một thư mục và tất cả các thư mục con, bạn có thể sử dụng chức năng os walk

Chức năng này khó hiểu hơn một chút, nhưng hãy xem mã bên dưới

files_list = []

for root, directories, files in os.walk[file_path]:
	for name in files:
		files_list.append[os.path.join[root, name]]

print[files_list]

Hàm walk trả về một bộ gồm ba. Vòng lặp for này đi qua các đầu ra đó

Xem một số hướng dẫn Python khác về datagy, bao gồm hướng dẫn đầy đủ của chúng tôi về cách tạo kiểu cho Pandas và tổng quan toàn diện của chúng tôi về Pivot Tables trong Pandas

Sử dụng Glob để liệt kê tất cả các tệp trong một thư mục

Glob hoạt động tương tự như chức năng os listdir, nhưng bạn có thể tìm kiếm tất cả các tệp hoặc những tệp phù hợp với các điều kiện cụ thể

Một lợi ích chính của thư viện toàn cầu là nó tự động bao gồm đường dẫn đến tệp trong mỗi mục. Điều này có thể đặc biệt hữu ích cho công việc liên quan đến dữ liệu

Ví dụ: để trả lại mọi thứ trong một thư mục, hãy sử dụng dấu hoa thị [*]

file_list = glob.glob["FILE_PATH/*"]
print[file_list]

Điều này sẽ trả về tất cả các tệp và thư mục trong thư mục đó

Sử dụng Glob để trả về tất cả các tệp của một loại tệp trong một thư mục

Tương tự như ví dụ trên, bạn cũng có thể chỉ trả về các tệp phù hợp với một điều kiện nhất định. Ví dụ: nếu bạn chỉ muốn trả về các tệp Excel, bạn có thể viết

file_list = glob.glob["FILE_PATH/*.xlsx"]

Điều này sẽ chỉ trả về các tệp có phần mở rộng xlsx

Điều này có thể cực kỳ hữu ích trong việc lấy tên tệp của chỉ một số loại tệp nhất định

Kết hợp dữ liệu với Pandas và Glob

Sử dụng Pandas và toàn cầu, thật dễ dàng để kết hợp nhiều tệp Excel vào một khung dữ liệu duy nhất

Ví dụ: nếu bạn muốn kết hợp các tệp tháng 11 và tháng 10 từ các tệp mẫu, điều này có thể được thực hiện dễ dàng với Glob và Pandas

file_list = glob.glob["FILE_PATH/*.xlsx"]

files = []

for filename in file_list:
    df = pd.read_excel[filename]
    files.append[df]

frame = pd.concat[files, axis=0, ignore_index=True]

print[frame]

Điều này trả về một khung dữ liệu kết hợp đầy đủ của tất cả các tệp Excel trong một thư mục

Phần kết luận

Trong bài đăng này, bạn đã học cách liệt kê tất cả các tệp trong một thư mục bằng cách sử dụng hàm os listdir, cách duyệt qua các thư mục trong một thư mục và lấy tất cả các tên tệp cũng như cách sử dụng glob để nhận các đường dẫn tệp cụ thể. Cuối cùng, bạn đã học cách kết hợp các tệp Excel vào một khung dữ liệu duy nhất bằng cách sử dụng toàn cầu và Pandas

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
    • Ví dụ để liệt kê các tệp của một thư mục
  • hệ điều hành. walk[] để liệt kê tất cả các tệp trong thư mục và thư mục con
  • hệ điều hành. scandir[] để lấy các tập tin của một thư mục
  • Mô-đun Glob để liệt kê các tệp của một thư mục
  • Mô-đun Pathlib để liệt kê các tệp của một thư mụ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

files = os.listdir[file_path]

print[files]
# Returns
# ['November.xlsx', 'October.xlsx', 'Other Files']
00 và
files = os.listdir[file_path]

print[files]
# Returns
# ['November.xlsx', 'October.xlsx', 'Other Files']
01 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

    files = os.listdir[file_path]
    
    print[files]
    # Returns
    # ['November.xlsx', 'October.xlsx', 'Other Files']
    02 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
    files = os.listdir[file_path]
    
    print[files]
    # Returns
    # ['November.xlsx', 'October.xlsx', 'Other Files']
    03

  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

    files = os.listdir[file_path]
    
    print[files]
    # Returns
    # ['November.xlsx', 'October.xlsx', 'Other Files']
    00

  4. Sử dụng hàm isfile[]

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

    files = os.listdir[file_path]
    
    print[files]
    # Returns
    # ['November.xlsx', 'October.xlsx', 'Other Files']
    05 để 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'.

files = os.listdir[file_path]

print[files]
# Returns
# ['November.xlsx', 'October.xlsx', 'Other Files']
00 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

files = os.listdir[file_path]

print[files]
# Returns
# ['November.xlsx', 'October.xlsx', 'Other Files']
7

đầ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

files = os.listdir[file_path]

print[files]
# Returns
# ['November.xlsx', 'October.xlsx', 'Other Files']
0

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

files_list = []

for root, directories, files in os.walk[file_path]:
	for name in files:
		files_list.append[os.path.join[root, name]]

print[files_list]
0

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

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

files = os.listdir[file_path]

print[files]
# Returns
# ['November.xlsx', 'October.xlsx', 'Other Files']
07 để lấy nội dung của một thư mục

files_list = []

for root, directories, files in os.walk[file_path]:
	for name in files:
		files_list.append[os.path.join[root, name]]

print[files_list]
2

đầu ra

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

files_list = []

for root, directories, files in os.walk[file_path]:
	for name in files:
		files_list.append[os.path.join[root, name]]

print[files_list]
3

files = os.listdir[file_path]

print[files]
# Returns
# ['November.xlsx', 'October.xlsx', 'Other Files']
08 để liệt kê tất cả các tệp trong thư mục và thư mục con

hệ điều hành. walk[] 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

files = os.listdir[file_path]

print[files]
# Returns
# ['November.xlsx', 'October.xlsx', 'Other Files']
08, 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

files_list = []

for root, directories, files in os.walk[file_path]:
	for name in files:
		files_list.append[os.path.join[root, name]]

print[files_list]
00 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

Ví dụ

files_list = []

for root, directories, files in os.walk[file_path]:
	for name in files:
		files_list.append[os.path.join[root, name]]

print[files_list]
7

đầu ra

files_list = []

for root, directories, files in os.walk[file_path]:
	for name in files:
		files_list.append[os.path.join[root, name]]

print[files_list]
8

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

Ví dụ

files_list = []

for root, directories, files in os.walk[file_path]:
	for name in files:
		files_list.append[os.path.join[root, name]]

print[files_list]
9

files_list = []

for root, directories, files in os.walk[file_path]:
	for name in files:
		files_list.append[os.path.join[root, name]]

print[files_list]
01 để lấy các tệp của một thư mục

Hàm

files_list = []

for root, directories, files in os.walk[file_path]:
	for name in files:
		files_list.append[os.path.join[root, name]]

print[files_list]
02 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 trình lặp gồm các đối tượng

files_list = []

for root, directories, files in os.walk[file_path]:
	for name in files:
		files_list.append[os.path.join[root, name]]

print[files_list]
03, chứa tên tệp

Ví dụ

file_list = glob.glob["FILE_PATH/*"]
print[file_list]
3

đầ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

files_list = []

for root, directories, files in os.walk[file_path]:
	for name in files:
		files_list.append[os.path.join[root, name]]

print[files_list]
04. Ở đây,
files_list = []

for root, directories, files in os.walk[file_path]:
	for name in files:
		files_list.append[os.path.join[root, name]]

print[files_list]
05 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

Ví 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

files_list = []

for root, directories, files in os.walk[file_path]:
	for name in files:
		files_list.append[os.path.join[root, name]]

print[files_list]
06 thành True

Ví 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

Làm cách nào để liệt kê tất cả các tệp trong thư mục và thư mục con Python?

Python liệt kê các tệp trong một thư mục .
listdir['dir_path']. 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
đi bộ ['dir_path']. Đệ quy lấy danh sách tất cả các tệp trong thư mục và thư mục con
scandir['đường dẫn']. Trả về các mục nhập thư mục cùng với thông tin thuộc tính tệp

Làm cách nào để có danh sách tất cả các tệp trong một thư mục và các thư mục con?

Mở File Explorer trong Windows. .
Nhấp vào thanh địa chỉ và thay thế đường dẫn tệp bằng cách nhập cmd rồi nhấn Enter
Điều này sẽ mở một dấu nhắc lệnh đen trắng hiển thị đường dẫn tệp ở trên
Nhập thư mục /A. D. .
Bây giờ sẽ có một tệp văn bản mới có tên là FolderList trong thư mục trên

Làm cách nào để tìm kiếm các tệp cụ thể trong thư mục con trong Python?

Python có thể tìm kiếm tên tệp trong một đường dẫn cụ thể của HĐH. Điều này có thể được thực hiện bằng cách sử dụng mô-đun os với các hàm walk[] . Điều này sẽ lấy một đường dẫn cụ thể làm đầu vào và tạo 3-tuple liên quan đến dirpath, dirnames và filenames.

Làm cách nào để có danh sách tất cả các tệp có sẵn trong một số thư mục trong Python?

Để có danh sách tất cả các tệp và thư mục trong một thư mục cụ thể trong hệ thống tệp, hãy sử dụng os. listdir[] trong các phiên bản cũ của Python hoặc os. scandir[] trong Python 3 .

Chủ Đề