目次
1. Cách cơ bản để tạo thư mục trong Python
Trong Python, bạn có thể tạo thư mục một cách dễ dàng bằng thư viện chuẩn. Mô-đun được dùng chủ yếu làos
. Phần này sẽ giải thích chi tiết cách tạo thư mục bằng mô-đun os
.Cách tạo thư mục trong Python: mô-đun os
Bằng cách sử dụng mô-đunos
, bạn có thể tạo thư mục ngay trong chương trình. Điều này hữu ích, chẳng hạn khi bạn cần sắp xếp dữ liệu hoặc tạo thư mục để lưu log. Cách tạo thư mục cơ bản như sau.import os
# Chỉ định đường dẫn của thư mục cần tạo
path = 'example_folder'
# Tạo thư mục
os.mkdir(path)
Trong đoạn mã này, hàm os.mkdir()
được dùng để tạo thư mục mới “example_folder”. Tuy nhiên, nếu thư mục đã tồn tại, hàm này sẽ gây ra FileExistsError
.Tạo thư mục nhiều tầng: os.makedirs()
Nếu muốn tạo không chỉ một thư mục đơn lẻ mà còn cả cấu trúc nhiều tầng cùng lúc, hãy dùng hàmos.makedirs()
.import os
# Chỉ định thư mục nhiều tầng
path = 'example_folder/subfolder'
# Tạo thư mục ngay cả khi thư mục cha không tồn tại
os.makedirs(path)
Như vậy, với os.makedirs()
, các thư mục cha chưa tồn tại trên đường dẫn chỉ định cũng sẽ được tạo đồng thời. Nhờ đó, bạn có thể tạo cấu trúc thư mục một lần rất thuận tiện.Xử lý lỗi: dùng exist_ok=True
Nếu muốn tiếp tục xử lý mà không phát sinh lỗi khi thư mục đã tồn tại, hãy dùng tùy chọnexist_ok=True
. Thiết lập như ví dụ dưới đây sẽ không báo lỗi ngay cả khi thư mục đã tồn tại.import os
path = 'example_folder/subfolder'
# Bỏ qua lỗi ngay cả khi thư mục đã tồn tại
os.makedirs(path, exist_ok=True)
Nhờ vậy, ngay cả khi chương trình mỗi lần chạy đều cố tạo cùng một thư mục, cũng sẽ không phát sinh lỗi, giúp bạn viết mã vững chắc hơn.2. Tạo thư mục bằng mô-đun Pathlib
Từ Python 3.4 trở đi, mô-đunpathlib
đã được thêm vào thư viện chuẩn. Mô-đun này cho phép thao tác đường dẫn theo hướng đối tượng và có thể tạo thư mục một cách trực quan. Ở đây, chúng tôi sẽ giải thích cách tạo thư mục bằng mô-đun pathlib
。Cách sử dụng mô-đun Pathlib
Bằng cách sử dụngpathlib.Path()
, bạn có thể tạo thư mục. Tương tự như mô-đun os
, khi chỉ định exist_ok=True
, bạn có thể tránh lỗi ngay cả khi thư mục đã tồn tại。from pathlib import Path
# Chỉ định đường dẫn thư mục cần tạo
path = Path('example_folder/subfolder')
# Tạo thư mục
path.mkdir(parents=True, exist_ok=True)
Trong đoạn mã này, khi chỉ định parents=True
, các thư mục cha cũng sẽ được tạo nếu chúng chưa tồn tại. Nhờ đó, bạn có thể đạt được hành vi tương tự như os.makedirs()
。Ưu điểm của mô-đun Pathlib
Đặc điểm lớn của mô-đunpathlib
là cho phép thao tác theo hướng đối tượng. Bằng cách sử dụng đối tượng Path
, ngoài việc tạo thư mục, bạn còn có thể kết hợp đường dẫn và thao tác tệp một cách trực quan. Nhờ đó, khả năng đọc và khả năng bảo trì của mã được cải thiện.3. Xử lý lỗi khi tạo thư mục
Khi tạo thư mục, có thể phát sinh nhiều loại lỗi. Chẳng hạn, khi thiếu quyền hoặc đường dẫn được chỉ định không hợp lệ. Phần này sẽ giải thích cách triển khai xử lý lỗi.Đối phó với lỗi quyền hạn và đường dẫn không hợp lệ
Các lỗi thường gặp khi tạo thư mục bằngos.makedirs()
hoặc pathlib.Path().mkdir()
gồm PermissionError
và FileNotFoundError
. Xử lý đúng các lỗi này sẽ giúp bạn tạo ra chương trình vững chắc hơn. Dưới đây là một ví dụ về xử lý lỗi.import os
path = 'example_folder/subfolder'
try:
os.makedirs(path, exist_ok=True)
print(f'Thư mục "{path}" đã được tạo.')
except PermissionError:
print('Bạn không có quyền tạo thư mục.')
except FileNotFoundError:
print('Đường dẫn được chỉ định không hợp lệ.')
except Exception as e:
print(f'Đã xảy ra lỗi không mong đợi: {e}')
Trong đoạn mã này, chúng ta chỉ ra cách xử lý cho từng lỗi phổ biến và cũng xử lý cả lỗi không lường trước. Nhờ vậy, lỗi được xử lý đúng cách mà chương trình không bị gián đoạn.Xử lý lỗi nâng cao
Trong những trường hợp có khả năng tạo thư mục thất bại, bạn cũng nên cân nhắc ghi lại nội dung lỗi vào log và thông báo cho người dùng. Đặc biệt, trong các ứng dụng quy mô lớn, việc xử lý lỗi có ảnh hưởng lớn đến trải nghiệm người dùng, vì vậy cần có biện pháp xử lý thỏa đáng.
4. Cách xóa thư mục
Không chỉ tạo thư mục, bạn cũng thường xuyên cần xóa các thư mục không còn cần thiết. Trong Python, bạn có thể sử dụng các mô-đunos
và shutil
của thư viện chuẩn để xóa thư mục. Tại đây, chúng tôi sẽ giải thích cụ thể các cách thực hiện.Xóa thư mục bằng os.rmdir()
Mô-đunos
cung cấp hàm rmdir()
để xóa thư mục. Tuy nhiên, hạn chế của hàm này là thư mục cần xóa phải trống.import os
# Chỉ định đường dẫn của thư mục cần xóa
path = 'example_folder/subfolder'
# Xóa thư mục
os.rmdir(path)
Đoạn mã này chỉ hoạt động đúng khi thư mục được chỉ định trống. Nếu trong thư mục có tệp hoặc thư mục con khác, sẽ phát sinh OSError
.Xóa đệ quy thư mục bằng shutil.rmtree()
Khi trong thư mục có tệp hoặc các thư mục con khác, bạn có thể sử dụng hàmrmtree()
của mô-đun shutil
để xóa đệ quy thư mục cùng toàn bộ nội dung của nó.import shutil
# Chỉ định đường dẫn của thư mục cần xóa
path = 'example_folder/subfolder'
# Xóa thư mục và toàn bộ nội dung của nó
shutil.rmtree(path)
Cách này cho phép xóa thư mục ngay cả khi thư mục không trống, nên rất hữu ích khi cần xóa toàn bộ cây thư mục. Tuy nhiên, các tệp và thư mục đã xóa không thể khôi phục, vì vậy cần thao tác cẩn trọng.Xử lý lỗi
Việc xử lý lỗi cũng quan trọng khi xóa thư mục. Chẳng hạn, nếu bạn không có quyền trên thư mục cần xóa hoặc đường dẫn chỉ định không hợp lệ, sẽ phát sinh lỗi. Dưới đây là ví dụ mã có kèm xử lý lỗi.import shutil
path = 'example_folder/subfolder'
try:
shutil.rmtree(path)
print(f'Thư mục "{path}" đã được xóa.')
except PermissionError:
print('Bạn không có quyền xóa thư mục.')
except FileNotFoundError:
print('Không tìm thấy thư mục đã chỉ định.')
except Exception as e:
print(f'Đã xảy ra lỗi ngoài dự kiến: {e}')
Đoạn mã này xử lý các lỗi phát sinh khi xóa và cũng linh hoạt ứng phó với các lỗi ngoài dự kiến.5. Các trường hợp ứng dụng thực tế
Ở đây, chúng ta sẽ giới thiệu các trường hợp ứng dụng hữu ích cho dự án thực tế và xử lý dữ liệu bằng cách kết hợp việc tạo và xóa thư mục. Đặc biệt, giả định các trường hợp như sắp xếp dữ liệu theo năm hoặc tháng theo từng thư mục.Tạo thư mục theo năm/tháng
Ví dụ, nếu muốn sắp xếp dữ liệu theo từng năm hoặc từng tháng, bạn có thể tạo một script tự động tạo thư mục.import os
from datetime import datetime
# Lấy năm và tháng hiện tại
current_year = datetime.now().year
current_month = datetime.now().month
# Thiết lập đường dẫn thư mục
folder_path = f'data/{current_year}/{current_month}'
# Tạo thư mục
os.makedirs(folder_path, exist_ok=True)
print(f'Thư mục "{folder_path}" đã được tạo.')
Script này sẽ tự động tạo thư mục dựa trên năm và tháng hiện tại, giúp sắp xếp dữ liệu hiệu quả.Xóa thư mục hàng loạt
Dựa trên các điều kiện nhất định, nếu muốn xóa hàng loạt các thư mục không cần thiết, bạn cũng có thể xử lý hiệu quả bằng Python. Chẳng hạn, có thể tạo một script để xóa các thư mục dữ liệu cũ đã quá một khoảng thời gian nhất định.import shutil
import os
from datetime import datetime, timedelta
# Lấy ngày của 30 ngày trước
threshold_date = datetime.now() - timedelta(days=30)
# Đường dẫn cơ sở để xóa thư mục
base_path = 'data/'
# Kiểm tra thư mục và xóa các thư mục cũ
for folder_name in os.listdir(base_path):
folder_path = os.path.join(base_path, folder_name)
if os.path.isdir(folder_path):
folder_date = datetime.strptime(folder_name, '%Y-%m-%d')
if folder_date < threshold_date:
shutil.rmtree(folder_path)
print(f'Thư mục cũ "{folder_path}" đã được xóa.')
Trong các trường hợp ứng dụng như vậy, bằng cách sử dụng chương trình để tự động hóa việc quản lý và sắp xếp thư mục, bạn có thể giảm bớt thao tác thủ công.6. Tổng kết
Trong bài viết này, chúng tôi đã giải thích cách tạo và xóa thư mục bằng Python. Từ các thao tác cơ bản sử dụng mô-đunos
và mô-đun pathlib
cho đến xử lý lỗi khi tạo thư mục và các trường hợp ứng dụng thực tế, chúng tôi đã giới thiệu khá toàn diện. Bằng cách vận dụng những kiến thức này, bạn có thể xây dựng các chương trình quản lý dữ liệu và tệp một cách hiệu quả。 Ở bước tiếp theo, bên cạnh việc tạo và xóa thư mục, bạn cũng nên học thêm các kỹ thuật quản lý dữ liệu nâng cao như thao tác tệp và nén.