Mô-đun Pathlib trong Python
Category: Python
Mô-đun Pathlib trong Python cung cấp các lớp và phương thức để thực hiện nhanh chóng các tác vụ phổ biến nhất liên quan đến đường dẫn hệ thống tệp, kết hợp các tính năng từ một số mô-đun chuẩn khác như os.path, glob, shutil và os.
Path classes trong mô-đun Pathlib được chia thành đường dẫn thuần túy và đường dẫn cụ thể . Đường dẫn thuần túy chỉ cung cấp các hoạt động tính toán nhưng không cung cấp các hoạt động I/O, trong khi đường dẫn cụ thể kế thừa từ đường dẫn thuần túy cung cấp cả các hoạt động tính toán cũng như I/O.
Sử dụng cơ bản mô-đun Pathlib của Python
Mô-đun Python pathlib cung cấp một cách hướng đối tượng để xử lý đường dẫn hệ thống tệp. Sau đây là cách chúng ta có thể sử dụng nó để thực hiện các hoạt động hệ thống tệp phổ biến hiệu quả hơn so với các mô-đun cũ os hơn os.path.
Nhập lớp chính
Trước khi có thể sử dụng bất kỳ tính năng nào của pathlib, chúng ta cần nhập lớp Path từ mô-đun:
from pathlib import Path
Liệt kê các thư mục con
Để liệt kê tất cả các thư mục con trong một thư mục, chúng ta có thể sử dụng phương thức iterdir() và lọc các thư mục:
from pathlib import Path
p = Path('/')
for subdir in p.iterdir():
if subdir.is_dir():
print(subdir)
Đầu ra:
/media
/root
/run
/home
/sbin
/var
/bin
/mnt
/opt
/lib64
/sys
/lib32
/tmp
/libx32
/usr
/etc
/boot
/proc
/dev
/srv
/lib
Liệt kê các tệp nguồn Python trong cây thư mục này
Chúng ta có thể liệt kê tất cả các tệp Python ( .py) trong một thư mục và các thư mục con của nó bằng phương pháp rglob() tìm kiếm đệ quy qua cây thư mục:
from pathlib import Path
p = Path('/')
files = p.rglob('*.py')
for f in files:
print(f)
Đầu ra:
\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.2288.0_x64__qbz5n2kfra8p0\Lib\abc.py
\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.2288.0_x64__qbz5n2kfra8p0\Lib\aifc.py
\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.2288.0_x64__qbz5n2kfra8p0\Lib\antigravity.py
\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.2288.0_x64__qbz5n2kfra8p0\Lib\argparse.py
Điều hướng bên trong cây thư mục
Chúng ta có thể điều hướng trong cây thư mục bằng toán tử /, được nạp chồng để xây dựng các đối tượng Path mới:
sp = p / 'example.txt'
print(sp)
Đầu ra:
\example.txt
Truy vấn thuộc tính đường dẫn
pathlib cho phép chúng ta dễ dàng kiểm tra nhiều thuộc tính khác nhau của đường dẫn:
# Kiểm tra xem đường dẫn có tuyệt đối không
print("Is absolute:", sp.is_absolute())
# Lấy tên tệp
print("File name:", sp.name)
# Nhận phần mở rộng
print("Extension:", sp.suffix)
# Lấy thư mục cha
print("Parent directory:", sp.parent)
Đầu ra:
Is absolute: False
File name: example.txt
Extension: .txt
Parent directory: \
Đọc và ghi vào một tập tin
Mở một file bằng pathlib rất đơn giản với phương thức open(). Chúng ta có thể đọc hoặc ghi vào file một cách dễ dàng:
# Đọc từ một tập tin
with (path / 'example.txt').open('r') as file:
content = file.read()
print(content)
# Ghi vào một tập tin
with (path / 'output.txt').open('w') as file:
file.write("Hello, GFG!")
Đầu ra:
First line of text.
Second line of text.
Third line of text.
Pure Paths
Như đã nêu ở trên, Pure path cung cấp các hoạt động tính toán thuần túy. Các đối tượng của lớp pure path cung cấp nhiều phương thức khác nhau cho các hoạt động xử lý đường dẫn. Đối tượng pure path hoạt động mà không thực sự truy cập vào hệ thống tệp. Pure Path hữu ích khi chúng ta chỉ muốn thao tác một đường dẫn và không thực sự truy cập vào hệ điều hành. Chúng ta có thể thao tác một đường dẫn hệ thống tệp Windows trên máy Unix hoặc ngược lại một cách dễ dàng bằng cách khởi tạo một trong các lớp pure.
lớp pathlib.PurePath(*pathsegments):
Lớp này giúp chúng ta quản lý đường dẫn. Nó không thực sự tương tác với các tệp trên máy tính của chúng ta nhưng cho phép chúng ta làm việc với thông tin đường dẫn một cách dễ dàng. Khi khởi tạo lớp này sẽ tạo pathlib.PurePosixPath hoặc pathlib.PureWindowsPath.
Ví dụ:
# Nhập lớp PurePath
# từ mô-đun pathlib
from pathlib import PurePath
# Khởi tạo lớp PurePath
obj = PurePath('foo/bar')
# in ra thể hiện của lớp PurePath
print(obj)
Đầu ra
foo/bar
lớp pathlib.PurePosixPath(*pathsegments):
Điều này dành cho các đường dẫn theo phong cách UNIX (như trên macOS hoặc Linux). Nó không dành cho Windows.
# Nhập lớp PurePosixPath
# từ mô-đun pathlib
from pathlib import PurePosixPath
# Khởi tạo lớp PurePosixPath
obj = PurePosixPath('foo/bar')
# in ra thể hiện của lớp PurePosixPath
print(obj)
Đầu ra
foo/bar
lớp pathlib.PureWindowsPath(*pathsegments):
Lớp này dành cho đường dẫn theo kiểu Windows. Nếu chúng ta sử dụng máy tính Windows, lớp này sẽ hiểu cách đường dẫn hoạt động.
# Nhập lớp PureWindowsPath
# từ mô-đun pathlib
from pathlib import PureWindowsPath
# Khởi tạo lớp PureWindowsPath
obj = PureWindowsPath('foo/bar')
# in ra thể hiện của lớp PureWindowsPath
print(obj)
Đầu ra
foo\bar
Dưới đây là một số phương thức được cung cấp bởi các lớp Pure Path:
Phương thức PurePath.is_absolute():
Phương pháp này được sử dụng để kiểm tra xem đường dẫn có tuyệt đối hay không. Phương pháp này trả về True nếu đường dẫn là tuyệt đối, nếu không trả về False.
Trên Windows, đường dẫn tuyệt đối sẽ bắt đầu bằng ký tự ổ đĩa và dấu hai chấm, chẳng hạn như C:\Users\Username\Documents\file.txt.
Trên các hệ thống dựa trên UNIX (như macOS và Linux), nó bắt đầu bằng dấu gạch chéo (/), chẳng hạn như /home/username/documents/file.txt.
from pathlib import PurePath
# Ví dụ về đường dẫn tuyệt đối
p = PurePath('/user/example/document.txt')
print(p.is_absolute())
# Ví dụ về đường dẫn tương đối
rp = PurePath('document.txt')
print(rp.is_absolute())
Đầu ra:
True
False
Thuộc tính PurePath.name:
Tính năng này cho phép chúng ta lấy phần cuối cùng của đường dẫn, thường là tên tệp hoặc thư mục.
# Chương trình Python để giải thích thuộc tính PurePath.name
# Nhập lớp PurePath từ mô-đun pathlib
from pathlib import PurePath
# Path
path = '/Desktop/file.txt'
# Khởi tạo lớp PurePath
obj = PurePath(path)
# Lấy thành phần đường dẫn cuối cùng
comp = obj.name
print(comp)
Đầu ra
file.txt
Concrete Paths:
Đường dẫn cụ thể đề cập đến các lớp cung cấp các phương thức để thực hiện các hoạt động trên hệ thống tệp. Các đường dẫn này là "cụ thể" vì chúng tương tác với hệ thống tệp thực tế, cho phép thực hiện các hoạt động tệp và thư mục như kiểm tra sự tồn tại, tạo thư mục, đọc tệp và nhiều hơn nữa. Chúng ta có thể khởi tạo một đường dẫn cụ thể theo ba cách sau:
lớp pathlib.Path(*pathsegments) :
Nó biểu diễn một đường dẫn và cho phép nhiều phương thức tương tác trực tiếp với hệ thống tệp. Tùy thuộc vào hệ thống Python đang chạy, Path sẽ hoạt động giống như PosixPath hoặc WindowsPath.
# Nhập lớp Path
from pathlib import Path
# Khởi tạo lớp Path
obj = Path('/usr/local/bin')
print(obj)
Đầu ra:
PosixPath('/usr/local/bin')
lớp pathlib.PosixPath(*pathsegments):
Lớp này được sử dụng cụ thể trong các hệ thống giống UNIX (Linux, macOS). Nó kế thừa tất cả các phương thức từ Path và PurePosixPath. Nó cung cấp các phương thức cho tương tác hệ thống tệp cụ thể của UNIX.
Lưu ý: Chúng ta không thể khởi tạo lớp pathlib.Posixpath trên hệ điều hành Windows.
# Nhập lớp PosixPath
# từ mô-đun pathlib
from pathlib import PosixPath
# Khởi tạo lớp PosixPath
obj = PosixPath('/usr/local/bin')
# In ra phiên bản của lớp PosixPath
print(obj)
Đầu ra
PosixPath('/usr/local/bin')
lớp pathlib.WindowsPath(*pathsegments):
Lớp này được sử dụng trên hệ thống Windows. Nó kế thừa từ Path và PureWindowsPath, điều chỉnh các hoạt động đường dẫn theo tiêu chuẩn Windows. Điều này bao gồm xử lý đường dẫn với ký tự ổ đĩa và dấu gạch chéo ngược.
# Nhập lớp WindowsPath
# từ mô-đun pathlib
from pathlib import WindowsPath
# Khởi tạo lớp WindowsPath
obj = WindowsPath('C:/Program Files/')
# In ra phiên bản của lớp WindowsPath
print(obj)
Đầu ra
WindowsPath('c:/Program Files/')
Dưới đây là một số phương thức được cung cấp bởi lớp Path :
Path.cwd() method :
Phương pháp này trả về một đối tượng đường dẫn mới biểu diễn thư mục làm việc hiện tại. Ví dụ, gọi Path.cwd() sẽ cung cấp cho chúng ta đường dẫn từ nơi tập lệnh Python của bạn được thực thi.
# Nhập lớp Path
from pathlib import Path
# Lấy tên thư mục làm việc hiện tại
dir = Path.cwd()
print(dir)
Đầu ra:
/home/ihritik
Path.exists() method :
Path.exists() kiểm tra xem đường dẫn đã chỉ định có tồn tại trên đĩa hay không. Nó trả về True nếu đường dẫn tồn tại, nếu không thì trả về False.
# Nhập lớp Path
from pathlib import Path
# Path
path = '/home/hrithik/Desktop'
# Khởi tạo lớp Path
obj = Path(path)
# Kiểm tra xem đường dẫn có trỏ đến
# một tệp hoặc thư mục hiện có không
print(obj.exists())
Đầu ra:
True
Path.is_dir() method :
Phương pháp này được sử dụng để xác định xem đường dẫn có trỏ đến một thư mục hay không. Nó trả về True nếu đường dẫn là một thư mục, nếu không thì trả về False.
# Nhập lớp Path
from pathlib import Path
# Path
path = '/home/hrithik/Desktop'
# Khởi tạo lớp Path
obj = Path(path)
# Kiểm tra xem đường dẫn có tham chiếu đến
# thư mục hay không
print(obj.is_dir())
Đầu ra:
True
Published on Jun 23, 2025