Xóa Thư Mục Trong Python
Có thể bạn quan tâm
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)
Thông thường chúng ta lược bỏ phần lớn các đối số và sử dụng cách viết rút gọn sau:shutil.rmtree(path)
Trong đó `path` là thư mục cần xóa. Ví dụ, chúng ta có một thư mục cấu trúc như sau: |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 shutilpath = './dir1'shutil.rmtree(path) |
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.pyLư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)
Thông thường chúng ta lược bỏ phần lớn các đối số và sử dụng cách viết rút gọn sau: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 ospath = './dir2'os.rmdir(path) |
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 ospath = './dir1'os.rmdir(path)# OSError: [WinError 145] The directory is not empty |
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 pathlibpath=pathlib.Path('./dir2')path.rmdir() |
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: os.rmdir('temp/dir_not_empty/')except OSError as e: pass |
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.pyChú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 ospath = './dir1/dir2/dir3/dir4'os.removedirs(path) |
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.pyGiả 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 osimport shutilpath = './dir1'shutil.rmtree(path)os.makedirs(path, exist_ok=True) |
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 osimport shutilpath = './dir1'for i in os.listdir(path): t=os.path.join(path,t) try: shutil.rmtree(t); except: os.remove(t) |
Ở 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
https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/xoa-thu-muc-trong-python/
Từ khóa » Xóa Thư Mục Python
-
Python Xóa Tệp Và Thư Mục
-
Làm Cách Nào để Xóa / Xóa Thư Mục Không Trống Với Python? - HelpEx
-
Cách Xóa File Và Thư Mục Trong Python đơn Giản, Nhanh Chóng
-
Xóa File Trong Python | Lập Trình Từ Đầu
-
Quản Lý File Và Thư Mục Trong Python
-
Tạo Và Xóa Thư Mục Bằng Python
-
Python Delete File - W3Schools
-
Bài 28. Quản Lý File Và Folder - Python Dainganxanh
-
How To Delete (Remove) Files And Directories In Python - Linuxize
-
Viết Chương Trình Xoá Các File Trùng Lặp Bằng Python | TopDev
-
File I/O Trong Python | TopDev
-
Delete (Remove) Files And Directories In Python - PYnative
-
Ghi (write), Tạo (create) Và Xóa (delete) Tập Tin (file) Với Python
-
Quản Lý Thư Mục Và Tệp Python