Python có một vài mô-đun tích hợp cho phép bạn xóa các tệp và thư mục.

Hướng dẫn này giải thích làm thế nào để xóa các tập tin hay thư mục bằng chức năng từ mô-đun ospathlib và shutil.

Xóa tệp

Trong Python bạn có thể sử dụng os.remove()os.unlink()pathlib.Path.unlink()để xóa một tập tin duy nhất.

mô-đun os cung cấp các cách để tương tác với hệ điều hành. Mô-đun có sẵn cho cả Python 2 và 3.

Để xóa một tệp duy nhất bằng os.remove(), hãy chuyển đường dẫn đến tệp dưới dạng đối số:

import os

file_path = '/tmp/file.txt'
os.remove(file_path)

os.remove()và os.unlink() chức năng giống hệt nhau về mặt ngữ nghĩa:

import os

file_path = '/tmp/file.txt'
os.unlink(file_path)

Nếu tệp được chỉ định không tồn tại, lỗi FileNotFoundError sẽ được đưa ra. Cả hai os.remove()và chỉ os.unlink()có thể xóa các tệp, không phải thư mục. Nếu đường dẫn đã cho trỏ đến một thư mục, chúng sẽ phát sinh ra lỗi IsADirectoryError.

Xóa tệp yêu cầu quyền ghi và thực thi trên thư mục chứa tệp. Nếu không, bạn sẽ gặp lỗi PermissionError.

Để tránh lỗi khi xóa tệp, bạn có thể sử dụng xử lý ngoại lệ để bắt ngoại lệ và gửi thông báo lỗi thích hợp:

import os

file_path = '/tmp/file.txt'

try:
    os.remove(file_path)
except OSError as e:
    print("Error: %s : %s" % (file_path, e.strerror))

Mô-đun pathlib có sẵn trong Python 3.4 trở lên. Nếu bạn muốn sử dụng mô-đun này trong Python 2, bạn có thể cài đặt nó bằng pip. pathlib cung cấp giao diện hướng đối tượng để làm việc với các đường dẫn hệ thống tệp cho các hệ điều hành khác nhau.

Để xóa một tệp với mô-đun pathlib, hãy tạo một đối tượng trỏ Path đến tệp và gọi phương thức unlink() trên đối tượng đó:

from pathlib import Path

file_path = Path('/tmp/file.txt')

try:
    file_path.unlink()
except OSError as e:
    print("Error: %s : %s" % (file_path, e.strerror))

pathlib.Path.unlink()os.remove()và os.unlink()cũng có thể được sử dụng để xóa một liên kết tượng trưng (symbolic link) .

Pattern matching

Bạn có thể sử dụng mô-đun toàn glob để khớp nhiều tệp dựa trên một mẫu. Ví dụ: để xóa tất cả các tệp .txt trong thư mục /tmp, bạn sẽ sử dụng một cái gì đó như sau:

import os
import glob

files = glob.glob('/tmp/*.txt')

for f in files:
    try:
        f.unlink()
    except OSError as e:
        print("Error: %s : %s" % (f, e.strerror))

Để xóa đệ quy tất cả các tệp .txt trong thư mục /tmp và tất cả các thư mục con bên dưới nó, hãy chuyển đối số recursive=True vào hàm glob()và sử dụng mẫu “ ** `:

import os
import glob

files = glob.glob('/tmp/**/*.txt', recursive=True)

for f in files:
    try:
        os.remove(f)
    except OSError as e:
        print("Error: %s : %s" % (f, e.strerror))

Mô-đun pathlib bao gồm hai chức năng glob, glob() và rglob()để phù hợp với tập tin trong một thư mục nhất định. glob()chỉ khớp với các tệp trong thư mục cấp cao nhất. rglob()khớp với tất cả các tệp trong thư mục và tất cả các thư mục con, một cách đệ quy. Code ví dụ sau sẽ xóa tất cả các tệp.txt trong thư mục /tmp:

from pathlib import Path

for f in Path('/tmp').glob('*.txt'):
    try:
        f.unlink()
    except OSError as e:
        print("Error: %s : %s" % (f, e.strerror))

Xóa thư mục (thư mục)

Trong Python, bạn có thể sử dụng os.rmdir()và pathlib.Path.rmdir() để xóa một thư mục trống và shutil.rmtree() xóa một thư mục không trống.

Ví dụ sau đây cho thấy cách xóa một thư mục trống:

import os

dir_path = '/tmp/img'

try:
    os.rmdir(dir_path)
except OSError as e:
    print("Error: %s : %s" % (dir_path, e.strerror))

Ngoài ra, bạn có thể xóa các thư mục bằng mô-đun pathlib:

from pathlib import Path

dir_path = Path('/tmp/img')

try:
    dir_path.rmdir()
except OSError as e:
    print("Error: %s : %s" % (dir_path, e.strerror))

Mô-đun shutil cho phép bạn thực hiện một số hoạt động cao cấp trên các tập tin và thư mục.

Với shutil.rmtree()chức năng này, bạn có thể xóa một thư mục nhất định bao gồm nội dung của nó:

import shutil

dir_path = '/tmp/img'

try:
    shutil.rmtree(dir_path)
except OSError as e:
    print("Error: %s : %s" % (dir_path, e.strerror))

Đối số được truyền tới shutil.rmtree()không thể là một liên kết tượng trưng (symbolic link) đến một thư mục.

Phần kết luận

Python cung cấp một số mô-đun để xử lý tệp.

Chúng ta đã tìm hiểu làm thế nào để sử dụng os.remove()os.unlink()pathlib.Path.unlink()để xóa một tập tin duy nhất, os.rmdir()và pathlib.Path.rmdir()để xóa một thư mục rỗng và shutil.rmtree()đệ quy xóa một thư mục và tất cả các nội dung của nó.

Hãy hết sức cẩn thận khi xóa tệp hoặc thư mục, vì một khi tệp đã bị xóa, nó không thể dễ dàng khôi phục được.

Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, vui lòng để lại bình luận.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments