Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Cách xóa file và thư mục trong Python
Trong Python, các thư viện tiêu chuẩn như os
, pathlib
, và shutil
cung cấp những phương pháp hiệu quả để xóa file và thư mục (folder) trên hệ thống. Đây là các công cụ mạnh mẽ và không yêu cầu cài đặt bổ sung. Bài viết này sẽ hướng dẫn bạn cách sử dụng các phương pháp này một cách chi tiết và dễ hiểu.
Xóa Files trong Python
Sử dụng os.remove(file_path)
os.remove()
là cách đơn giản nhất để xóa một file khỏi hệ thống. Biến file_path
phải là một đường dẫn hợp lệ (path-like object).
Lưu ý:
- Trên Windows, file sẽ không thể bị xóa nếu đang được sử dụng bởi ứng dụng khác.
- Trên Linux, file sẽ bị xóa khỏi hệ thống file , nhưng dữ liệu trên ổ đĩa chỉ bị loại bỏ sau khi ứng dụng sử dụng nó giải phóng.
Lỗi có thể gặp:
Bài viết này được đăng tại [free tuts .net]
IsADirectoryError
: Nếu đường dẫn là thư mục thay vì file .FileNotFoundError
: Khi file không tồn tại.
Ví dụ:
import os os.remove("/home/user/Documents/notes.txt")
Sử dụng pathlib.Path.unlink(missing_ok=False)
Phương pháp này xóa file hoặc liên kết tượng trưng (symlink). Nếu tham số missing_ok=True
, lỗi FileNotFoundError
sẽ được bỏ qua.
Lưu ý:
- Trên Linux, liên kết tượng trưng có thể trùng tên với file đích.
- Trên Windows, shortcut thường có phần mở rộng
.lnk
.
Lỗi có thể gặp:
FileNotFoundError
: Khi file không tồn tại.
Ví dụ:
import pathlib path = pathlib.Path("/home/user/Desktop/sample_pdf.pdf") path.unlink()
Xóa thư mục (Folders) trong Python
Sử dụng os.rmdir(directory_path)
Phương thức này hoạt động tương tự như lệnh rmdir
trên Linux. Thư mục cần xóa phải là thư mục rỗng, nếu không sẽ báo lỗi.
Lỗi có thể gặp:
FileNotFoundError
: Khi thư mục không tồn tại.OSError
: Khi thư mục không rỗng.
Ví dụ:
import os os.rmdir("/home/user/Desktop/Images")
Sử dụng pathlib.Path.rmdir()
Phương thức này là một cách thay thế cho os.rmdir()
. Pathlib mở rộng thêm một số chức năng của os.rmdir()
, nhưng thư mục cần xóa cũng phải rỗng.
Lỗi có thể gặp:
FileNotFoundError
: Khi thư mục không tồn tại.OSError
: Khi thư mục không rỗng.
Ví dụ:
import pathlib path = pathlib.Path("/home/user/Desktop/Images") path.rmdir()
Sử dụng shutil.rmtree(directory_path)
Phương pháp này sử dụng thư viện shutil
để xóa toàn bộ thư mục, bao gồm cả các file và thư mục con bên trong. Nó hoạt động tương tự như lệnh rm -rf
trên Linux.
Lưu ý:
- Đường dẫn chỉ định không được là liên kết tượng trưng.
Lỗi có thể gặp:
FileNotFoundError
: Khi thư mục không tồn tại.NotADirectoryError
: Khi đường dẫn không phải là thư mục.
Ví dụ:
import shutil shutil.rmtree("/home/user/Desktop/Images")
Kết bài
Các phương pháp trên đều hữu ích tùy theo nhu cầu cụ thể:
- Nếu cần xóa file đơn lẻ, bạn có thể sử dụng
os.remove()
hoặcpathlib.unlink()
. - Đối với thư mục rỗng,
os.rmdir()
hoặcpathlib.rmdir()
là lựa chọn phù hợp. - Trong trường hợp cần xóa toàn bộ thư mục và nội dung,
shutil.rmtree()
là cách tiếp cận hiệu quả nhất.