Module pathlib cung cấp cách tiếp cận hướng đối tượng để xử lý đường dẫn hệ thống tệp. Module cũng cung cấp chức năng phù hợp cho các hệ điều hành khác nhau. Các lớp được định nghĩa trong module này thuộc hai loại – kiểu đường dẫn thuần túy (pure path types) và kiểu đường dẫn cụ thể (concrete path types). Trong khi các đường dẫn thuần túy chỉ có thể thực hiện các phép tính thuần túy, các đường dẫn cụ thể có khả năng thực hiện các thao tác I/O.
Module pathlib định nghĩa các lớp sau:
| STT | Module & Mô tả |
|---|---|
| 1 | PurePath Lớp cơ sở cho tất cả các lớp khác |
| 2 | Path Kế thừa từ PurePath. Đây là lớp cụ thể đại diện cho đường dẫn hệ thống tệp. |
| 3 | PosixPath Lớp con Path cho hệ điều hành không phải Windows |
| 4 | WindowsPath Lớp con Path cho hệ thống Windows |
| 5 | PurePosixPath Lớp con PurePath cho hệ thống không phải Windows |
| 6 | PureWindowsPath Lớp con PurePath cho hệ thống Windows |
Khi thể hiện của lớp Path được tạo, nó sẽ tự động trả về WindowsPath hoặc PosixPath tùy thuộc vào hệ thống của bạn.
Lưu ý rằng đối tượng WindowsPath hoặc PosixPath cũng có thể được tạo trực tiếp, nhưng chỉ trên hệ thống cùng loại.
Để tạo đối tượng Path, sử dụng cú pháp sau:
>>> from pathlib import *
>>> p = Path(".")
>>> type(p)
<class 'pathlib.WindowsPath'>
Bạn có thể thấy rằng vì câu lệnh trên được thực thi trên hệ thống Windows, đối tượng WindowsPath được tạo. "." Tham chiếu đến thư mục hiện tại.
Lớp Path có các phương thức sau được định nghĩa trong nó:
absolute() − trả về phiên bản tuyệt đối của đối tượng Path.
>>> p.absolute()
WindowsPath('C:/python36')
exists() − trả về true nếu đường dẫn cho trước tồn tại.
>>> p = Path("mydir")
>>> p.exists()
False
>>> p = Path("etc")
>>> p.exists()
True
is_dir() − trả về true nếu đường dẫn là một thư mục.
>>> p = Path("etc")
>>> p.is_dir()
True
>>> p = Path("test.py")
>>> p.is_dir()
False
is_file() − trả về true nếu đường dẫn tương ứng với tệp.
>>> p = Path("tmp.py")
>>> p.is_file()
True
>>> p = Path("etc")
>>> p.is_file()
False
iterdir() − trả về một generator tạo ra tên tệp trong thư mục tương ứng với đường dẫn.
>>> p = Path("libs")
>>> for f in p.iterdir():
... print(f)
libs\libpython36.a
libs\python3.lib
libs\python36.lib
libs\_tkinter.lib
mkdir() − tạo thư mục mới đại diện cho đường dẫn nếu nó chưa có mặt.
>>> p = Path("mydir")
>>> p.mkdir()
>>> p.absolute()
WindowsPath('C:/python36/mydir')
>>> p = Path("codes")
>>> p.mkdir()
FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'codes'
open() − mở tệp được đại diện bởi đối tượng Path và trả về đối tượng tệp. Điều này tương tự như hàm built-in open().
>>> p = Path("Hello.py")
>>> f = p.open()
>>> f.readline()
'Hello Python'
read_bytes() − mở tệp ở chế độ nhị phân, đọc dữ liệu của nó ở dạng nhị phân và đóng nó.
>>> p = Path("Hello.py")
>>> f.read_bytes()
>>> p.read_bytes()
b'Hello Python'
read_text() − Tệp được mở ở chế độ văn bản để đọc văn bản và đóng sau đó.
>>> p = Path("Hello.py")
>>> p.read_text()
'Hello Python'
write_text() − mở tệp, ghi văn bản và đóng nó.
>>> p = Path("Hello.py")
>>> p.write_text("Hello how are you?")
18
write_bytes() − Ghi dữ liệu nhị phân vào tệp và đóng nó.
>>> p = Path("Hello.py")
>>> p.write_bytes(b'I am fine')
9
stat() − trả về thông tin về đường dẫn này.
>>> p.stat() os.stat_result(st_mode=16895, st_ino=9570149208167477, st_dev=1526259762, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1543085915, st_mtime=1543085915, st_ctime=1543085915)
rmdir() − xóa thư mục tương ứng với đối tượng Path.
>>> p = Path("mydir")
>>> p.rmdir()
Path.cwd() − Đây là một classmethod của lớp Path. Trả về đường dẫn đến thư mục làm việc hiện tại.
>>> Path.cwd()
WindowsPath('C:/python36')
Path.home() − Đây là một classmethod của lớp Path. Trả về đường dẫn đến thư mục home.
>>> Path.home()
WindowsPath('C:/Users/acer')
Toán tử '/' được dùng để xây dựng đường dẫn.
>>> p = Path(".")
>>> p1 = p / 'codes'
>>> p1.absolute()
WindowsPath('C:/python36/codes')
Trong bài viết này chúng ta đã học API hướng đối tượng cho đối tượng hệ thống tệp như được định nghĩa trong module pathlib.