pathlib – 物件導向的檔案系統路徑
This module offers classes representing filesystem paths with semantics appropriate for different operating systems. Path classes are divided between pure paths, which provide purely computational operations without I/O, and concrete paths, which inherit from pure paths but also provide I/O operations.
Source code: Lib/pathlib.py
01. Quickstart Tutorial
使用 pathlib.Path 來表示一個路徑,對於 Path 物件,我們可以透過 /
來串接路徑:
1 2 3 4 5 6 7 8 |
>>> import pathlib >>> p = pathlib.Path(‘/usr’) >>> p PosixPath(‘/usr’) >>> lib = p / ‘lib’ >>> lib PosixPath(‘/usr/lib’) >>> |
我們可以對 Path 物件進行一連串的操作:
1 2 3 4 5 6 7 8 9 10 11 |
>>> lib PosixPath(‘/usr/lib’) >>> lib.exists() # 檢查是否存在 True >>> lib.is_file() # 檢查是不是檔案 False >>> lib.is_dir() # 檢查是不是資料夾 True >>> lib.is_symlink() # 檢查是不是捷徑 False >>> |
對於 Path 物件,我們也能使用 glob
來搜尋檔案:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
>>> lib.glob(‘*.so’) <generator object Path.glob at 0x7fe50b93a0e0> >>> pprint.pprint(list(lib.glob(‘*.so.0.1.0’)), width=70) [PosixPath(‘/usr/lib/libanthydic.so.0.1.0’), PosixPath(‘/usr/lib/libnm.so.0.1.0’), PosixPath(‘/usr/lib/libusb-1.0.so.0.1.0’), PosixPath(‘/usr/lib/libxcb-randr.so.0.1.0’), PosixPath(‘/usr/lib/libwayland-server.so.0.1.0’), PosixPath(‘/usr/lib/libgom-1.0.so.0.1.0’), PosixPath(‘/usr/lib/libdcadec.so.0.1.0’), PosixPath(‘/usr/lib/libturbojpeg.so.0.1.0’), PosixPath(‘/usr/lib/libxcb-xinput.so.0.1.0’), PosixPath(‘/usr/lib/libip6tc.so.0.1.0’), PosixPath(‘/usr/lib/libbasicobjects.so.0.1.0’), PosixPath(‘/usr/lib/libpulse-simple.so.0.1.0’), PosixPath(‘/usr/lib/libkeybinder.so.0.1.0’), PosixPath(‘/usr/lib/libgpds.so.0.1.0’), PosixPath(‘/usr/lib/libORBitCosNaming-2.so.0.1.0’), PosixPath(‘/usr/lib/libanthy.so.0.1.0’), PosixPath(‘/usr/lib/libmpeg2.so.0.1.0’), PosixPath(‘/usr/lib/libORBit-2.so.0.1.0’), PosixPath(‘/usr/lib/libndp.so.0.1.0’), PosixPath(‘/usr/lib/libip4tc.so.0.1.0’)] >>> |
glob 出來的路徑,同樣也是 Path 物件,也能對他們使用上述的操作。
我們也能對 Path 物件修改他的 Unix 權限:
1 2 3 4 5 6 7 8 9 10 11 |
>>> p = pathlib.Path(‘/tmp/foo’) >>> p.stat() os.stat_result(st_mode=33188, st_ino=1693415, st_dev=38, st_nlink=1, st_uid=1000, st_gid=100, st_size=0, st_atime=1502249772, st_mtime=1502249772, st_ctime=1502249772) >>> p.stat().st_mode 33188 >>> f‘{p.stat().st_mode:o}’ # 八進位 ‘100644’ >>> p.chmod(0o755) >>> f‘{p.stat().st_mode:o}’ ‘100755’ >>> |
Path 物件也有提供一些常用的功能,例如說:
1 2 3 4 5 6 7 |
>>> pathlib.Path.cwd() # os.getcwd() PosixPath(‘/home/louielu/Python/cpython’) >>> pathlib.Path.home() PosixPath(‘/home/louielu’) >>> pathlib.Path(‘~/cpython’).expanduser() PosixPath(‘/home/louielu/cpython’) >>> |
02. HOW-TO Guides
目前暫時沒有。
03. Discussions
目前暫時沒有。
Leave a Reply