Hướng dẫn cách xóa thư mục trong python. Bạn sẽ học được cách xóa thư mục trong python, cách xóa thư mục rỗng Python, cách xóa đệ quy các thư mục rỗng Python, bằng các phương pháp như sử dụng hàm shutil.rmtree(), hàm os.rmdir(), hàm os.removedirs() hay phương thức Path.rmdir() sau bài học này.
Xóa thư mục trong python | shutil.rmtree()
Để xóa một thư mục cũng như toàn bộ file và thư mục con chứa trong nó, chúng ta sử dụng hàm shutil.rmtree() tích hợp trong module shutil, với cú pháp sau đây:
shutil.rmtree(path, ignore_errors=False, onerror=None)
shutil.rmtree(path)
|data/ |--dir1 | | | |--user.txt | |--dir2 | |--delete_folder.py
Để xóa thư mục dir1
cùng toàn bộ file và thư mục con chứa trong nó, ở trên, chúng ta viết:
import shutil |
Kết quả, thư mục dir1
cùng toàn bộ file và thư mục con sẽ bị xóa như sau:
|data/ |--dir2 | |--delete_folder.py
Lưu ý, hàm shutil.rmtree() chỉ dùng để xóa thư mục trong python. Nếu chỉ định path
là đường dẫn của một file, lỗi sau sẽ xảy ra:
NotADirectoryError: [WinError 267] the directory name is invalid |
Để xóa file trong python, hãy tham khảo bài viết Xóa file trong python.
Xóa thư mục rỗng Python | os.rmdir()
Trong trường hợp muốn xóa thư mục rỗng trong Python, ngoài cách dùng hàm shutil.rmtree() ở trên, chúng ta cũng có thể dùng hàm os.rmdir() tích hợp trong module os, với cú pháp sau đây:
os.rmdir(path, *
, dir_fd=None)
os.rmdir(path)
Trong đó path
là thư mục rỗng cần xóa.
Ví dụ, chúng ta có một thư mục như sau:
|data/ |--dir1 | | | |--user.txt | |--dir2 | |--delete_folder.py
Để xóa thư mục rỗng dir2
ở trên, chúng ta viết:
import os |
Nếu như thư mục muốn xóa không phải là thư mục rỗng, lỗi OSError sẽ bị xảy ra. Ví dụ, chúng ta cố xóa thư mục dir1
không phải là thư mục rỗng:
import os |
Lưu ý, giống như hàm shutil.rmtree(), hàm os.rmdir() cũng chỉ dùng để xóa thư mục trong python. Nếu chỉ định path
là đường dẫn của một file, lỗi sau sẽ xảy ra:
NotADirectoryError: [WinError 267] the directory name is invalid |
Để xóa file trong python, hãy tham khảo bài viết Xóa file trong python.
Xóa thư mục rỗng Python | Path.rmdir()
Ngoài cách dùng hàm os.rmdir() để xóa thư mục rỗng trong Python, chúng ta cũng có thể dùng phương thức Path.rmdir() trong module pathlib để xóa một thư mục rỗng, với cú pháp sau đây:
Path.rmdir()
Trong đó Path
là một path object - một instance được tạo ra từ class pathlib.Path() chứa thông tin đường dẫn thư mục cần xóa.
Cách sử dụng như ví dụ sau:
import pathlib |
Nếu thư mục cần xóa không phải là thư mục rỗng, lỗi WinError sẽ xảy ra:
OSError: [WinError 145] The directory is not empty |
Để tránh lỗi này, chúng ta có thể kết hợp lệnh Kiểm tra tồn tại của thư mục trong python kèm lệnh pass là xong:
try: |
Cuối cùng, nếu đường dẫn cần xóa không phải là thư mục mà là một file, lỗi NotADirectoryErrorsẽ xảy ra:
NotADirectoryError: [WinError 267] the directory name is invalid |
Để xóa file trong python, hãy tham khảo bài viết Xóa file trong python.
Xóa đệ quy các thư mục rỗng Python | os.removedirs()
Chúng ta có thể tiến hành xóa đệ quy tất cả các thư mục rỗng chứa trong một đường dẫn trong python, bằng cách sử dụng hàm os.removedirs() với cú pháp sau:
os.removedirs(path)
Hàm os.removedirs() sẽ tiến hành xóa tất cả các thư mục rỗng từ thư mục đầu cuối lên đầu, cho tới khi xuất hiện một thư mục không rỗng.
Và nếu thư mục cuối không phải là thư mục rỗng, lỗi OSError sẽ xảy ra.
Ví dụ, chúng ta có một thư mục cấu trúc như sau:
|data/ |--dir1 | |--dir2 | | |-- dir3 | | | |-- dir4 | |--user.txt | |--delete_folder.py
Chúng ta dùng chương trình sau để xóa đệ quy tất cả các thư mục rỗng có trong thư mục dir1
như sau:
import os |
Khi chạy lệnh, hàm sẽ tiến hành xóa theo thứ tự dir4
=> dir3
=> dir2
, cho tới khi xuất hiện thư mục không rỗng dir1
.
Kết quả:
|data/ |--dir1 | |--user.txt | |--delete_folder.py
Giả sử nếu trong thư mục dir4
có chứa file kiyoshi.txt
và thư mục này không rỗng, khi chạy hàm os.removedirs(), lỗi sẽ xảy ra:
OSError: [WinError 145] The directory is not empty |
Làm rỗng thư mục Python
Để làm rỗng thư mục trong Python, chúng ta chỉ cần xóa thư mục đó, sau đó tạo mới một thư mục cùng tên là xong. Ví dụ:
import os |
Trong trường hợp bạn muỗn giữ lại thư mục đó, bạn chỉ cần xóa toàn bộ file và thư mục con trong đó với các dòng lệnh sau đây:
import os |
Ở trên, chúng ta đã Lấy danh sách tên file và thư mục chứa trong thư mục cần xóa, sau đó dùng lệnh Nối đường dẫn trong python để tạo đường dẫn cho các file và thư mục con này. Lúc này, chúng ta tiến hành xóa đường dẫn vừa tạo, nếu đường dẫn đó là file thì dùng lệnh Xóa file trong python và nếu là folder thì dùng lệnh xóa folder trong python mà Kiyoshi đã hướng dẫn ở trên.
Rất là đơn giản phải không nào?
Tổng kết và thực hành
Trên đây Kiyoshi đã hướng dẫn bạn về cách xóa thư mục trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.
URL Link
HOME › python cơ bản - lập trình python cho người mới bắt đầu>>16. xử lý file trong python