Computer >> Máy Tính >  >> Lập trình >> Python

Đường dẫn hệ thống tệp hướng đối tượng trong Python (pathlib)

Mô-đun pathlib cung cấp một cách tiếp cận hướng đối tượng để xử lý các đường dẫn hệ thống tệp. Mô-đun cũng cung cấp chức năng thích hợp cho các hệ điều hành khác nhau. Các lớp được định nghĩa trong mô-đun này có hai loại - loại đường dẫn thuần túy và loại đường dẫn cụ thể. Trong khi các đường dẫn thuần túy chỉ có thể thực hiện các hoạt động tính toán thuần túy, các đường dẫn cụ thể cũng có thể thực hiện các hoạt động I / O.

mô-đun pathlib xác định các lớp sau -

Sr.No. Mô-đun &Mô tả
1 PurePath
Lớp cơ sở cho tất cả các lớp khác
2 Đường dẫn
phân lớp từ PurePath. Đây là một lớp cụ thể đại diện cho đường dẫn hệ thống tệp.
3 PosixPath
Lớp con đường dẫn cho hệ điều hành không phải Windows
4 WindowsPath
Lớp con đường dẫn cho hệ thống Windows
5 PurePosixPath
Lớp con PurePath dành cho các hệ thống không phải Windows
6 PureWindowsPath
Lớp con PurePath dành cho hệ thống Windows

Khi phiên bả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 không phải chỉ trên hệ thống cùng loại.

Để tạo đối tượng Path, hãy 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 nên đối tượng WindowsPath được tạo ra. "." Đề cập đế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ó

tuyệt đối () - trả về phiên bản tuyệt đối của đối tượng Path.

>>> p.absolute()
WindowsPath('C:/python36')

tồn tại () - trả về true nếu tồn tại đường dẫn đã cho

>>> 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ề trình 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ó.

>>> 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'

mở () - 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ự với hàm open () tích hợp sẵn.

>>> 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 lại.

>>> 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 nó sau đó.

>>> p = Path("Hello.py")
>>> p.read_text()
'Hello Python'

write_text () - mở tệp, viết 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 trong một tệp và đóng cùng một tệp.

>>> 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 () - loại bỏ 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 chính

>>> Path.home()
WindowsPath('C:/Users/acer')

Toán tử ‘/’ được sử dụng để tạo đường dẫn.

>>> p = Path(".")
>>> p1 = p/'codes'
>>> p1.absolute()
WindowsPath('C:/python36/codes')

Trong bài viết này, chúng ta đã tìm hiểu API hướng đối tượng cho đối tượng hệ thống tệp như được định nghĩa trong mô-đun pathlib.