Quản lý thư mục Python
Category: Python
Quản lý thư mục Python đề cập đến việc xử lý và tương tác với các thư mục (folder) trên hệ thống tệp bằng Python. Nó bao gồm việc tạo, xóa, điều hướng và liệt kê nội dung thư mục theo chương trình. Python cung cấp các mô-đun tích hợp như os và os.path và mô-đun pathlib mới hơn cho mục đích này.
mô-đun os và os.path
Mô-đun os cung cấp các chức năng tương tác với hệ điều hành, chẳng hạn như quản lý thư mục, tệp, quy trình và biến môi trường. Nó là đa nền tảng và thích ứng với hệ điều hành cơ bản (ví dụ: Windows, Linux, macOS).
Tạo thư mục mới
os.mkdir(path) : Tạo một thư mục duy nhất tại đường dẫn đã chỉ định. Đưa ra lỗi nếu thư mục đã tồn tại.
os.makedirs(path) : Tạo một thư mục và bất kỳ thư mục cha nào cần thiết. Hữu ích cho việc tạo thư mục lồng nhau.
import os
# Tạo một thư mục duy nhất
os.mkdir("my_directory")
# Tạo các thư mục lồng nhau
os.makedirs("parent_directory/child_directory")
Nhận Thư mục làm việc hiện tại (CWD)
os.getcwd() : Trả về đường dẫn tuyệt đối của thư mục làm việc hiện tại nơi tập lệnh đang chạy. Hữu ích để xác định nơi tập lệnh của bạn hoạt động, đặc biệt là khi làm việc với đường dẫn tương đối. Nó trả về một chuỗi biểu diễn đường dẫn thư mục.
import os
print("String format :", os.getcwd())
print("Byte string format :", os.getcwdb())
Đầu ra:
String format : /home/guest/sandbox
Byte string format : b'/home/guest/sandbox'
Đổi tên thư mục:
os.rename(src, dst) : Đổi tên thư mục (hoặc tệp) từ src thành dst. Nguồn (src) phải tồn tại và đích (dst) không được tồn tại.
Ví dụ , hãy xem xét có một tệp có tên 'file1.txt' trong thư mục làm việc hiện tại. Bây giờ chỉ cần đổi tên nó:
os.rename("my_directory", "renamed_directory")
Nếu cần đổi tên và di chuyển tệp sang thư mục khác thì đoạn mã sẽ là:
import os
os.renames('my_directory', 'renamed_directory')
Thay đổi thư mục làm việc hiện tại (CWD)
os.chdir(path) : Thay đổi thư mục làm việc hiện tại thành đường dẫn đã chỉ định. Sau khi thay đổi, tất cả các đường dẫn tương đối được giải quyết liên quan đến thư mục làm việc mới. Nếu đường dẫn đã chỉ định không tồn tại, một OSError sẽ được đưa ra.
Ví dụ , nếu chúng ta cần thay đổi CWD thành my_folder trong D:/, thì đoạn mã sau đây được sử dụng.
import os
print("Current directory :", os.getcwd())
# Thay đổi thư mục
os.chdir('/home/nikhil/Desktop/')
print("Current directory :", os.getcwd())
Đầu ra:
Current directory : /home/nikhil/Desktop/gfg
Current directory : /home/nikhil/Desktop
Liệt kê các tập tin trong một thư mục
os.listdir(path) : Trả về danh sách tên các tệp và thư mục trong thư mục được chỉ định. Dấu "." chỉ thư mục hiện tại. Sử dụng ".." để chỉ thư mục cha. Phương pháp này không liệt kê đệ quy nội dung của các thư mục con. Đối với đệ quy, hãy sử dụng os.walk().
Ví dụ: Liệt kê các tập tin trong CWD- GeeksforGeeks (thư mục gốc)
import os
print("Files in CWD are :",os.listdir(os.getcwd()))
Đầu ra:
Files in CWD are : ['output.txt', 'input.txt', 'driver', 'Solution.py']
Xóa một thư mục
os.rmdir(path) : Xóa thư mục rỗng. Sử dụng os.rmdir() cho các thư mục rỗng; nếu không, lỗi sẽ được đưa ra.
shutil.rmtree(path) : Xóa một thư mục và nội dung của nó theo cách đệ quy. Sử dụng shutil.rmtree() cho các thư mục không rỗng. Hãy thận trọng vì điều này là không thể đảo ngược.
Ví dụ , chúng ta hãy xem xét một thư mục K:/files. Bây giờ để xóa nó, người ta phải đảm bảo rằng nó trống và sau đó tiến hành xóa.
import os
li=os.listdir('/')
if len(li)==0:
print("Error!! Directory not empty!!")
else:
os.rmdir('k:/files')
Kiểm tra xem đó có phải là một thư mục không
os.path.isdir(path): Trả về True nếu đường dẫn là thư mục, nếu không thì trả về False. Thường được sử dụng trước khi thực hiện các thao tác như os.rmdir() hoặc os.listdir() để đảm bảo đường dẫn hợp lệ. Giúp ngăn ngừa lỗi trong quá trình quản lý thư mục.
import os
# thư mục làm việc hiện tại của
# GeeksforGeeks
cwd='/'
print(os.path.isdir(cwd))
# Một số thư mục khác
other='K:/'
print(os.path.isdir(other))
Đầu ra:
True
False
Lấy kích thước của thư mục
os.path.getsize(path): Trả về kích thước của tệp theo byte. Sử dụng hàm này với os.walk() để tính kích thước thư mục. os.walk() lặp qua tất cả các thư mục con và tệp trong một thư mục. Tổng hợp kích thước tệp sẽ cho ra kích thước thư mục tổng thể.
import os
print(os.path.getsize(os.getcwd()))
Đầu ra:
4096
Nhận thời gian truy cập và sửa đổi
os.path.getatime(path): Trả về thời gian truy cập cuối cùng của một tệp hoặc thư mục dưới dạng dấu thời gian.
os.path.getmtime(path): Trả về thời gian sửa đổi cuối cùng dưới dạng dấu thời gian.
Ví dụ : Lấy thời gian truy cập và sửa đổi thư mục GeeksforGeeks (gốc)
import time
import os
# Get times
access_time = os.path.getatime("/")
modification_time = os.path.getmtime("/")
# Convert to readable format
print("Access Time:", time.ctime(access_time))
print("Modification Time:", time.ctime(modification_time))
Đầu ra:
Access Time: Sat Jan 4 09:21:37 2025
Modification Time: Sat Jan 4 09:21:37 2025
mô-đun shutil
Mô-đun shutil trong Python là một thư viện quản lý tệp và thư mục cấp cao. Nó cung cấp các hàm để sao chép, di chuyển và xóa tệp và thư mục.
shutil.copytree :
Sao chép đệ quy toàn bộ cây thư mục (thư mục nguồn và tất cả nội dung của nó) đến đích. Tạo một thư mục mới tại đường dẫn đích và sao chép tất cả các tệp và thư mục con. Gây ra FileExistsError nếu đích tồn tại và dirs_exist_ok là False.
Cú pháp:
Shutil.copytree(src, dst, dirs_exist_ok=False)
Các thông số:
src: Đường dẫn đến thư mục nguồn.
dst: Đường dẫn đến thư mục đích.
dirs_exist_ok: Nếu True, cho phép sao chép vào thư mục hiện có. Nếu False (mặc định), sẽ báo lỗi nếu đích đã tồn tại.
Ví dụ:
import shutil
# Sao chép toàn bộ cây thư mục
shutil.copytree("source_dir", "destination_dir")
print("Directory copied successfully")
shutil.rmtree :
Xóa toàn bộ cây thư mục, bao gồm tất cả các tệp và thư mục con của nó. Thao tác này không thể đảo ngược. Hãy cẩn thận khi chỉ định đường dẫn.
Cú pháp:
shutil.rmtree(path, ignore_errors=False)
Các thông số:
đường dẫn: Đường dẫn đến thư mục cần xóa.
ignore_errors: Nếu True, bỏ qua lỗi trong quá trình xóa. Nếu False (mặc định), sẽ đưa ra lỗi.
Ví dụ:
import shutil
# Xóa cây thư mục
shutil.rmtree("destination_dir")
print("Directory removed successfully")
shutil.move(s,d) :
Di chuyển tệp hoặc thư mục đến vị trí mới. Nếu nguồn và đích nằm trên cùng một hệ thống tệp, thì tương đương với việc đổi tên. Nếu không, nó sẽ sao chép nguồn đến đích rồi xóa bản gốc.
Cú pháp:
shutil.move(src, dst)
Các thông số:
src: Đường dẫn đến tệp hoặc thư mục nguồn.
dst: Đường dẫn đến tệp hoặc thư mục đích.
Ví dụ :
import shutil
# Di chuyển thư mục đến vị trí mới
shutil.move("source_dir", "new_location")
print("Directory moved successfully")
Published on Jun 23, 2025