您好,登錄后才能下訂單哦!
前言
相比常用的 os.path而言,pathlib 對于目錄路徑的操作更簡介也更貼近 Pythonic。但是它不單純是為了簡化操作,還有更大的用途。
pathlib 是Python內置庫,Python 文檔給它的定義是:The pathlib module – object-oriented filesystem paths(面向對象的文件系統路徑)。pathlib 提供表示文件系統路徑的類,其語義適用于不同的操作系統。
更多詳細的內容可以參考官方文檔:https://docs.python.org/3/library/pathlib.html#methods
1. pathlib模塊下Path類的基本使用
from pathlib import Path path = r'D:\python\pycharm2020\program\pathlib模塊的基本使用.py' p = Path(path) print(p.name) # 獲取文件名 print(p.stem) # 獲取文件名除后綴的部分 print(p.suffix) # 獲取文件后綴 print(p.parent) # 相當于dirname print(p.parent.parent.parent) print(p.parents) # 返回一個iterable 包含所有父目錄 for i in p.parents: print(i) print(p.parts) # 將路徑通過分隔符分割成一個元組
運行結果如下:
pathlib模塊的基本使用.py
pathlib模塊的基本使用
.py
D:\python\pycharm2020\program
D:\python
<WindowsPath.parents>
D:\python\pycharm2020\program
D:\python\pycharm2020
D:\python
D:\
('D:\\', 'python', 'pycharm2020', 'program', 'pathlib模塊的基本使用.py')
from pathlib import Path path_1 = Path.cwd() # 獲取當前文件路徑 path_2 = Path.home() p1 = Path('~/pathlib模塊的基本使用.py') print(path_1) print(path_2) print(p1.expanduser())
運行結果如下:
D:\python\pycharm2020\program
C:\Users\Administrator
C:\Users\Administrator\pathlib模塊的基本使用.py
Path.stat():Return a os.stat_result object containing information about this path
from pathlib import Path import datetime p = Path('pathlib模塊的基本使用.py') print(p.stat()) # 獲取文件詳細信息 print(p.stat().st_size) # 文件的字節大小 print(p.stat().st_ctime) # 文件創建時間 print(p.stat().st_mtime) # 上次修改文件的時間 creat_time = datetime.datetime.fromtimestamp(p.stat().st_ctime) st_mtime = datetime.datetime.fromtimestamp(p.stat().st_mtime) print(f'該文件創建時間:{creat_time}') print(f'上次修改該文件的時間:{st_mtime}')
運行結果如下:
os.stat_result(st_mode=33206, st_ino=3659174698076635, st_dev=3730828260, st_nlink=1, st_uid=0, st_gid=0, st_size=543, st_atime=1597366826, st_mtime=1597366826, st_ctime=1597320585)
543
1597320585.7657475
1597366826.9711637
該文件創建時間:2020-08-13 20:09:45.765748
上次修改該文件的時間:2020-08-14 09:00:26.971164
從不同.stat().st_屬性 返回的時間戳表示自1970年1月1日以來的秒數,可以用datetime.fromtimestamp將時間戳轉換為有用的時間格式。
Path.exists():Whether the path points to an existing file or directory
Path.resolve(strict=False):Make the path absolute,resolving any symlinks. A new path object is returned
from pathlib import Path p1 = Path('pathlib模塊的基本使用.py') # 文件 p2 = Path(r'D:\python\pycharm2020\program') # 文件夾 absolute_path = p1.resolve() print(absolute_path) print(Path('.').exists()) print(p1.exists(), p2.exists()) print(p1.is_file(), p2.is_file()) print(p1.is_dir(), p2.is_dir()) print(Path('/python').exists()) print(Path('non_existent_file').exists())
運行結果如下:
D:\python\pycharm2020\program\pathlib模塊的基本使用.py
True
True True
True False
False True
True
False
Path.iterdir():When the path points to a directory,yield path objects of the directory contents
from pathlib import Path p = Path('/python') for child in p.iterdir(): print(child)
運行結果如下:
\python\Anaconda
\python\EVCapture
\python\Evernote_6.21.3.2048.exe
\python\Notepad++
\python\pycharm-community-2020.1.3.exe
\python\pycharm2020
\python\pyecharts-assets-master
\python\pyecharts-gallery-master
\python\Sublime text 3
Path.glob(pattern):Glob the given relative pattern in the directory represented by this path, yielding all matching files (of any kind),The “**” pattern means “this directory and all subdirectories, recursively”. In other words, it enables recursive globbing.
Note:Using the “**” pattern in large directory trees may consume an inordinate amount of time
遞歸遍歷該目錄下所有文件,獲取所有符合pattern的文件,返回一個generator。
獲取該文件目錄下所有.py文件
from pathlib import Path path = r'D:\python\pycharm2020\program' p = Path(path) file_name = p.glob('**/*.py') print(type(file_name)) # <class 'generator'> for i in file_name: print(i)
獲取該文件目錄下所有.jpg圖片
from pathlib import Path path = r'D:\python\pycharm2020\program' p = Path(path) file_name = p.glob('**/*.jpg') print(type(file_name)) # <class 'generator'> for i in file_name: print(i)
獲取給定目錄下所有.txt文件、.jpg圖片和.py文件
from pathlib import Path def get_files(patterns, path): all_files = [] p = Path(path) for item in patterns: file_name = p.rglob(f'**/*{item}') all_files.extend(file_name) return all_files path = input('>>>請輸入文件路徑:') results = get_files(['.txt', '.jpg', '.py'], path) print(results) for file in results: print(file)
Path.mkdir(mode=0o777, parents=False, exist_ok=False)
Changed in version 3.5: The exist_ok parameter was added.
Path.rmdir():Remove this directory. The directory must be empty.
from pathlib import Path p = Path(r'D:\python\pycharm2020\program\test') p.mkdir() p.rmdir()
from pathlib import Path p = Path(r'D:\python\test1\test2\test3') p.mkdir(parents=True) # If parents is true, any missing parents of this path are created as needed p.rmdir() # 刪除的是test3文件夾
from pathlib import Path p = Path(r'D:\python\test1\test2\test3') p.mkdir(exist_ok=True)
from pathlib import Path p = Path('foo.txt') p.open(mode='w').write('some text') target = Path('new_foo.txt') p.rename(target) content = target.open(mode='r').read() print(content) target.unlink()
2. 與os模塊用法的對比
總結
到此這篇關于python中pathlib模塊的基本用法與總結的文章就介紹到這了,更多相關python pathlib模塊用法內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。