日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python系列13:python中Path常用功能

發(fā)布時(shí)間:2023/12/18 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python系列13:python中Path常用功能 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 基本功能

建議使用pathlib模塊來處理文件和文件夾,可以跨平臺(tái)。pathlib提供path對象來操作,包括目錄和文件。

from pathlib import Path p =Path() #輸出格式。PosixPath('.') p =Path('a','b','c/d') #輸出格式PosixPath('a/b/c/d') p =Path('/etc') #PosixPath('/etc')

2. 路徑拼接和分解

使用操作符/進(jìn)行路徑拼接,有兩種方式:① Path對象/Path對象;② Path對象/字符串,或者字符串/Path對象;也可以使用joinpath方法。

使用Parts屬性進(jìn)行路徑分解,可以返回路徑中的每一個(gè)部分

p = Path() # 當(dāng)前目錄,PosixPath('.') p = p/'a' #PosixPath('a') p1 = 'b'/p #PosixPath('b/a') p2 = Path('c') #PosixPath('c') p3 = p2 /p1 #PosixPath('c/b/a') print(p3.parts) #('c', 'b', 'a') p3.joinpath('etc','int.d',Path('.httpd')) #PosixPath('c/b/a/etc/int.d/.httpd')

3. 獲取路徑

Str獲取路徑字符串。Bytes獲取路徑字符串的bytes。

p = Path('/etc') print(str(p),bytes(p)) #/etc b'/etc'

使用parent獲取父目錄,使用parents獲取所有父目錄,使用absolute方法獲取絕對路徑

p = Path('/a/b/c/d') p.parent.parent # / PosixPath('/a/b') p.absolute().parents[len(p.absolute().parents)-1] # PosixPath('/') print(len(p.absolute().parents)) # 4

獲取文件路徑的方法:
(1)name:目錄的最后一個(gè)部分
(2)suffix:目錄中最后一個(gè)部分的拓展名
(3)stem:目錄最后一個(gè)部分,沒有后綴。
(4)suffixes 返回多個(gè)擴(kuò)展名列表。
(5)with_suffix(suffix):補(bǔ)充擴(kuò)展名到路徑尾部,返回新的路徑,擴(kuò)展名存在則無效。
(6)with_name(name):替換目錄最后一個(gè)部分并返回一個(gè)新的路徑。

p = Path('/etc/config/system/cf.config.gz') print(p.name) #cf.config.gz print(p.suffix) #.gz print(p.suffixes) #['.config', '.gz'] print(p.stem) #cf.config print(p.with_name('cf.config')) #/etc/config/system/cf.config print(p.with_suffix('.txt')) #/etc/config/system/cf.config.txt

4. 文件操作

open(mode=’r’,buffering=-1,encoding=None,errors=None,newline=None):使用方法類似內(nèi)建函數(shù)open,返回一個(gè)文件對象。
read_bytes():以’rb’讀取路徑相對文件,并返回二進(jìn)制流。
read_text(encoding=None,errors=None):以’rt’ 方式讀取路徑對應(yīng)文件,返回文本。
Path.write_bytes(data):以’wb’方式寫入數(shù)據(jù)到路徑對應(yīng)文件。
write_text(data,encoding=None,errors=None):以’wt’方式寫入字符串到路徑對應(yīng)文件。

p = Path('my_binary_file') p.write_bytes(b'Binary file contents') p.read_bytes() #打印出b'Binary file contents' p = Path('my_text_file') p.write_text('Text file contents') p.read_text() #打印出'Text file contents' p = Path('test.py') p.write_text('hello python') print(p.read_text()) # hello python with p.open()as f:print(f.read(5)) # hello

5. 文件夾操作

(1)as_uri()將文件路徑返回URI。
(2)mkdir(mode=0o777,parents=False,exist_ok=False)
(3)Parents,是否創(chuàng)建父目錄,True等同于mkdir-p:False時(shí),父目錄不存在,則拋出fileNotfounderror。
(4)exist_ok參數(shù),在3.5版本加入,flase時(shí)路徑存在,拋出異常,True時(shí)候異常被忽略。
(5)Iterdir():迭代當(dāng)前目錄
(6)touch(mode=0o666,exist_ok=True)創(chuàng)建一個(gè)文件
(7)cwd():返回當(dāng)前工作目錄
(8)home():返回當(dāng)前目錄
(9)is_dir():是否是目錄,目錄存在返回True.
(10)is_symlink():是否是軟連接
(11)is_file():是否是普通文件,文件存在返回True
(12)is_socket():是否是socket文件
(13)is_block_device():是否是塊設(shè)備。
(14)is_char_device():是否是字符設(shè)備
(15)is_absolute():是否是絕對路徑
(16)resolve():返回一個(gè)新的路徑,這個(gè)新的路徑就是當(dāng)前Path的絕對路徑,如果是軟連接則直接被解析
(17)absolute()也可以獲取絕對路徑,但是推薦使用resolve()
(18)exists()目錄或文件是否存在
(19)rmdir()刪除空目錄,沒有提供判斷目錄為空的方法。
(20)ls():獲取所有文件和文件夾

p = Path() p.exists() # True p /='a/b/c/d' p.exists() # False p.mkdir() # 報(bào)錯(cuò),創(chuàng)建不成功 p.mkdir(parents=True) # 創(chuàng)建成功 p.exists() # True p.mkdir(parents=True) # 報(bào)錯(cuò),已經(jīng)有了,不能再創(chuàng)建 p.mkdir(parents=True,exist_ok=True) # 不報(bào)錯(cuò) p /='readme.txt' # p = PosixPath('a/b/c/d/readme.txt') p.parent.rmdir() # 只剩下PosixPath('a/b/c') p.parent.exists() # False p.mkdir() # 報(bào)錯(cuò),不存在文件 p.mkdir(parents=True) # 成功 for x in p.parents[len(p.parents)-1].iterdir():print(x,end='\t')if x.is_dir():flag = Falsefor _ in x.iterdir():flag = Truebreakprint('dir','Not Empty' if flag else 'Empyt',sep='\t')elif x.is_file():print('file')elseprint('other file')

6. 通配操作

glob(pattern):通配給定的模式。
rglob(pattern):通配給定的模式,遞歸目錄,返回一個(gè)生成器。

list(p.glob('test*')) #返回當(dāng)前目錄對象下的test開頭的文件 list(p.glob('**/*.py'))#遞歸所有目錄,等同于rglob,會(huì)比較費(fèi)時(shí) g = p.rglob('*.py') #生成器 next(g)

match(pattern):返回True或False的通配函數(shù)。

Path('a/b.py').match('*.py') #True Path('/a/b/c.py').match('b/*.py')#True Path('/a/b/c.py').match('a/*.py') #False 因?yàn)閍文件下找不到.Py文件 Path('/a/b/c.py').match('a/*/*.py')#True Path('/a/b/c.py').math('a/**/*.py')#True Path('/a/b/c.py').math('**/*.py')#True

總結(jié)

以上是生活随笔為你收集整理的python系列13:python中Path常用功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。