Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เส้นทางระบบไฟล์เชิงวัตถุใน Python (pathlib)


โมดูล pathlib จัดเตรียมแนวทางเชิงวัตถุเพื่อจัดการเส้นทางของระบบไฟล์ โมดูลนี้ยังมีฟังก์ชันการทำงานที่เหมาะสมกับระบบปฏิบัติการต่างๆ คลาสที่กำหนดไว้ในโมดูลนี้มีสองประเภท - ประเภทเส้นทางบริสุทธิ์และประเภทเส้นทางคอนกรีต แม้ว่าเส้นทางบริสุทธิ์จะทำได้เพียงการคำนวณเท่านั้น แต่เส้นทางที่เป็นรูปธรรมก็สามารถดำเนินการ I/O ได้เช่นกัน

โมดูล pathlib กำหนดคลาสต่อไปนี้ -

ซีเนียร์ โมดูล &คำอธิบาย
1 PurePath
คลาสพื้นฐานสำหรับคลาสอื่นๆ ทั้งหมด
2 เส้นทาง
คลาสย่อยจาก PurePath นี่คือคลาสที่เป็นรูปธรรมที่แสดงเส้นทางของระบบไฟล์
3 PosixPath
คลาสย่อยของพาธสำหรับระบบปฏิบัติการที่ไม่ใช่ Windows
4 WindowsPath
คลาสย่อยของพาธสำหรับระบบ Windows
5 PurePosixPath
คลาสย่อย PurePath สำหรับระบบที่ไม่ใช่ Windows
6 PureWindowsPath
คลาสย่อย PurePath สำหรับระบบ Windows

เมื่ออินสแตนซ์ของคลาส Path ถูกสร้างขึ้น มันจะส่งคืน WindowsPath หรือ PosixPath โดยอัตโนมัติขึ้นอยู่กับระบบของคุณ

โปรดทราบว่าวัตถุ WindowsPath หรือ PosixPath สามารถสร้างได้โดยตรง แต่ไม่ใช่บนระบบประเภทเดียวกันเท่านั้น

ในการสร้างเส้นทางวัตถุให้ใช้ไวยากรณ์ต่อไปนี้

>>> from pathlib import *
>>> p = Path(".")
>>> type(p)
<class 'pathlib.WindowsPath'>

คุณจะเห็นได้ว่าเนื่องจากคำสั่งข้างต้นทำงานบนระบบ Windows วัตถุ WindowsPath จึงถูกสร้างขึ้น “.” หมายถึงไดเร็กทอรีปัจจุบัน

คลาส Path มีเมธอดที่กำหนดไว้ในนั้น

สัมบูรณ์() − ส่งคืนเวอร์ชันที่แน่นอนของวัตถุ Path

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

มีอยู่() − คืนค่า true หากมีเส้นทางที่กำหนด

>>> p = Path("mydir")
>>> p.exists()
False
>>> p = Path("etc")
>>> p.exists()
True

is_dir() − คืนค่า จริง หากพาธเป็นไดเร็กทอรี

>>> p = Path("etc")
>>> p.is_dir()
True
>>> p = Path("test.py")
>>> p.is_dir()
False

is_file() − คืนค่า จริง หากพาธสอดคล้องกับไฟล์

>>> p = Path("tmp.py")
>>> p.is_file()
True
>>> p = Path("etc")
>>> p.is_file()
False

iterdir() − ส่งคืนตัวสร้างที่ให้ชื่อไฟล์ในไดเร็กทอรีที่สอดคล้องกับเส้นทาง

>>> p = Path("libs")
>>> for f in p.iterdir():
print (f)
libs\libpython36.a
libs\python3.lib
libs\python36.lib
libs\_tkinter.lib

mkdir() − สร้างไดเร็กทอรีใหม่แทนพาธหากยังไม่มี

>>> 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() ในตัว

>>> p = Path("Hello.py")
>>> f = p.open()
>>> f.readline()
'Hello Python'

read_bytes() - เปิดไฟล์ในโหมดไบนารี อ่านข้อมูลในรูปแบบไบนารีและปิดแบบเดียวกัน

>>> p = Path("Hello.py")
>>> f.read_bytes()
>>> p.read_bytes()
b'Hello Python'

read_text() − ไฟล์ถูกเปิดในโหมดข้อความเพื่ออ่านข้อความและปิดในภายหลัง

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

write_text() - เปิดไฟล์ เขียนข้อความ แล้วปิด

>>> p = Path("Hello.py")
>>> p.write_text("Hello how are you?")
18

write_bytes() − เขียนข้อมูลไบนารีในไฟล์และปิดเหมือนกัน

>>> p = Path("Hello.py")
>>> p.write_bytes(b'I am fine')
9

สถิติ() − ส่งคืนข้อมูลเกี่ยวกับเส้นทางนี้

>>> 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() - ลบไดเรกทอรีที่สอดคล้องกับวัตถุเส้นทาง

>>> p = Path("mydir")
>>> p.rmdir()

Path.cwd() − นี่คือคลาสเมธอดของคลาสพาธ ส่งคืนพาธไปยังไดเร็กทอรีการทำงานปัจจุบัน

>>> Path.cwd()
WindowsPath('C:/python36')

Path.home() − นี่คือคลาสเมธอดของคลาสพาธ ส่งคืนพาธไปยังโฮมไดเร็กตอรี่

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

ตัวดำเนินการ '/' ใช้สำหรับสร้างเส้นทาง

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

ในบทความนี้ เราได้เรียนรู้ API เชิงวัตถุไปยังวัตถุระบบไฟล์ตามที่กำหนดไว้ในโมดูล pathlib