最近入職了新公司,南京的西門子電氣自動化有限公司,不過是外包進的,都是淚!哎!不管怎樣,繼續努力,繼續學習,繼續加油吧!
這兩天接觸到了pathlib模塊,發現比os.path 等好用太多,特此記錄一下:
地址:https://www.jianshu.com/p/ecc1af359df9
以一個更方便和更人性化的方法對os.path
進行了包裝,那麼我們可以以後統一建立一個ROOT_PATH的path類然後對其進行操作。
from pathlib import Path
導入包。p = Path(filepath)
創建一個path對象
當p是路徑的時候p.parent
:p的父路徑p.parents
:p的所有祖輩路徑,返回一個列表,序號越大表示離p越遠。p.iterdir()
:返回一個迭代器,包含P下所有的文件。p.is_file()
和p.is_dir()
判斷p是文件還是目錄。p.is_absolute()
判斷p是否是絕對路徑。p.match('C:\Windows\*')
:判斷p是否符合某一個模式。p.glob('*.py')
:在p下搜索符合某一模式的文件。p.glob('**\*.py')
或者p.rglob('*.py')
在p及其子目錄下搜索符合某一模式文件,rglob是遞歸的遍歷所有子目錄的文件。p.mkdir()
如果p不是目錄的時候創建目錄。Path.mkdir(mode=0o777, parents=False, exist_ok=False)
:如果parents爲True的時候,那麼當中間文件夾缺失的時候也可以創建中間文件夾,如果exist_ok
爲True的時候那麼可以當文件夾存在的時候不raise error.
*p.joinpath('a','b')
:文件夾的連接。
PurePosixPath('/etc').joinpath('init.d', 'apache2')
PurePosixPath('/etc/init.d/apache2')
當p是文件的時候
p.name
:獲取文件名。p.suffix
:獲取後綴。
其他用法
Path.cwd()
返回當前路徑名- 最好用的方法莫過於直接用除法就表示路徑了。
print(Path("/home/zhaoliang/test.py").parent/'vocab.txt')
> /home/zhaoliang/vocab.txt
stem
目錄最後一個部分,沒有後綴
print(Path("/home/zhaoliang/test.py").stem)
>test
with_name(name)
替換目錄最後一個部分並返回一個新的路徑
print(Path("/home/zhaoliang/test.py").with_name('vocab.txt'))
> /home/zhaoliang/vocab.txt
with_suffix(suffix)
替換擴展名,返回新的路徑,擴展名存在則不變
print(Path("/home/zhaoliang/test.py").with_suffix('.txt'))
> /home/zhaoliang/test.txt
Path().exist()
判斷路徑或者文件是否存在。
# 判斷路徑是否存在
path = Path("path/file")
path.exist()