日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:pathlib—-面向?qū)ο蟮奈募到y(tǒng)路徑

pathlib —- 面向?qū)ο蟮奈募到y(tǒng)路徑

3.4 新版功能.

源代碼 Lib/pathlib.py


該模塊提供表示文件系統(tǒng)路徑的類,其語義適用于不同的操作系統(tǒng)。路徑類被分為提供純計算操作而沒有 I/O 的 純路徑,以及從純路徑繼承而來但提供 I/O 操作的 具體路徑。

如果以前從未用過此模塊,或不確定哪個類適合完成任務(wù),那要用的可能就是 Path。它在運行代碼的平臺上實例化為 具體路徑。

在一些用例中純路徑很有用,例如:

  1. 如果你想要在 Unix 設(shè)備上操作 Windows 路徑(或者相反)。你不應在 Unix 上實例化一個 WindowsPath,但是你可以實例化 PureWindowsPath。

  2. 你只想操作路徑但不想實際訪問操作系統(tǒng)。在這種情況下,實例化一個純路徑是有用的,因為它們沒有任何訪問操作系統(tǒng)的操作。

參見

PEP 428:pathlib 模塊 — 面向?qū)ο蟮奈募到y(tǒng)路徑。

參見

對于底層的路徑字符串操作,你也可以使用 os.path 模塊。

基礎(chǔ)使用

導入主類:

 
 
 
 
  1. >>> from pathlib import Path

列出子目錄:

 
 
 
 
  1. >>> p = Path('.')
  2. >>> [x for x in p.iterdir() if x.is_dir()]
  3. [PosixPath('.hg'), PosixPath('docs'), PosixPath('dist'),
  4. PosixPath('__pycache__'), PosixPath('build')]

列出當前目錄樹下的所有 python 源代碼文件:

 
 
 
 
  1. >>> list(p.glob('**/*.py'))
  2. [PosixPath('test_pathlib.py'), PosixPath('setup.py'),
  3. PosixPath('pathlib.py'), PosixPath('docs/conf.py'),
  4. PosixPath('build/lib/pathlib.py')]

在目錄樹中移動:

 
 
 
 
  1. >>> p = Path('/etc')
  2. >>> q = p / 'init.d' / 'reboot'
  3. >>> q
  4. PosixPath('/etc/init.d/reboot')
  5. >>> q.resolve()
  6. PosixPath('/etc/rc.d/init.d/halt')

查詢路徑的屬性:

 
 
 
 
  1. >>> q.exists()
  2. True
  3. >>> q.is_dir()
  4. False

打開一個文件:

 
 
 
 
  1. >>> with q.open() as f: f.readline()
  2. ...
  3. '#!/bin/bash\n'

純路徑

純路徑對象提供了不實際訪問文件系統(tǒng)的路徑處理操作。有三種方式來訪問這些類,也是不同的風格:

class pathlib.PurePath(\pathsegments*)

一個通用的類,代表當前系統(tǒng)的路徑風格(實例化為 PurePosixPath 或者 PureWindowsPath):

 
 
 
 
  1. >>> PurePath('setup.py') # Running on a Unix machine
  2. PurePosixPath('setup.py')

每一個 pathsegments 的元素可能是一個代表路徑片段的字符串,一個返回字符串的實現(xiàn)了 os.PathLike 接口的對象,或者另一個路徑對象:

 
 
 
 
  1. >>> PurePath('foo', 'some/path', 'bar')
  2. PurePosixPath('foo/some/path/bar')
  3. >>> PurePath(Path('foo'), Path('bar'))
  4. PurePosixPath('foo/bar')

pathsegments 為空的時候,假定為當前目錄:

 
 
 
 
  1. >>> PurePath()
  2. PurePosixPath('.')

當給出一些絕對路徑,最后一位將被當作錨(模仿 os.path.join() 的行為):

 
 
 
 
  1. >>> PurePath('/etc', '/usr', 'lib64')
  2. PurePosixPath('/usr/lib64')
  3. >>> PureWindowsPath('c:/Windows', 'd:bar')
  4. PureWindowsPath('d:bar')

但是,在 Windows 路徑中,改變本地根目錄并不會丟棄之前盤符的設(shè)置:

 
 
 
 
  1. >>> PureWindowsPath('c:/Windows', '/Program Files')
  2. PureWindowsPath('c:/Program Files')

假斜杠和單個點號會被消除,但雙點號 ('..') 和打頭的雙斜杠 ('//') 不會,因為這會出于各種原因改變路徑的實際含義 (例如符號鏈接、UNC 路徑等):

 
 
 
 
  1. >>> PurePath('foo//bar')
  2. PurePosixPath('foo/bar')
  3. >>> PurePath('//foo/bar')
  4. PurePosixPath('//foo/bar')
  5. >>> PurePath('foo/./bar')
  6. PurePosixPath('foo/bar')
  7. >>> PurePath('foo/../bar')
  8. PurePosixPath('foo/../bar')

(一個很 na?ve 的做法是讓 PurePosixPath('foo/../bar') 等同于 PurePosixPath('bar'),如果 foo 是一個指向其他目錄的符號鏈接那么這個做法就將出錯)

純路徑對象實現(xiàn)了 os.PathLike 接口,允許它們在任何接受此接口的地方使用。

在 3.6 版更改: 添加了 os.PathLike 接口支持。

class pathlib.PurePosixPath(\pathsegments*)

一個 PurePath 的子類,路徑風格不同于 Windows 文件系統(tǒng):

 
 
 
 
  1. >>> PurePosixPath('/etc')
  2. PurePosixPath('/etc')

pathsegments 參數(shù)的指定和 PurePath 相同。

class pathlib.PureWindowsPath(\pathsegments*)

PurePath 的一個子類,此路徑風格代表 Windows 文件系統(tǒng)路徑,包括 UNC paths#UNC):

 
 
 
 
  1. >>> PureWindowsPath('c:/Program Files/')
  2. PureWindowsPath('c:/Program Files')
  3. >>> PureWindowsPath('//server/share/file')
  4. PureWindowsPath('//server/share/file')

pathsegments 參數(shù)的指定和 PurePath 相同。

無論你正運行什么系統(tǒng),你都可以實例化這些類,因為它們提供的操作不做任何系統(tǒng)調(diào)用。

通用性質(zhì)

路徑是不可變并可哈希的。相同風格的路徑可以排序與比較。這些性質(zhì)尊重對應風格的大小寫轉(zhuǎn)換語義:

 
 
 
 
  1. >>> PurePosixPath('foo') == PurePosixPath('FOO')
  2. False
  3. >>> PureWindowsPath('foo') == PureWindowsPath('FOO')
  4. True
  5. >>> PureWindowsPath('FOO') in { PureWindowsPath('foo') }
  6. True
  7. >>> PureWindowsPath('C:') < PureWindowsPath('d:')
  8. True

不同風格的路徑比較得到不等的結(jié)果并且無法被排序:

 
 
 
 
  1. >>> PureWindowsPath('foo') == PurePosixPath('foo')
  2. False
  3. >>> PureWindowsPath('foo') < PurePosixPath('foo')
  4. Traceback (most recent call last):
  5. File "", line 1, in
  6. TypeError: '<' not supported between instances of 'PureWindowsPath' and 'PurePosixPath'

運算符

斜杠 / 操作符有助于創(chuàng)建子路徑,就像 os.path.join() 一樣:

 
 
 
 
  1. >>> p = PurePath('/etc')
  2. >>> p
  3. PurePosixPath('/etc')
  4. >>> p / 'init.d' / 'apache2'
  5. PurePosixPath('/etc/init.d/apache2')
  6. >>> q = PurePath('bin')
  7. >>> '/usr' / q
  8. PurePosixPath('/usr/bin')

文件對象可用于任何接受 os.PathLike 接口實現(xiàn)的地方。

 
 
 
 
  1. >>> import os
  2. >>> p = PurePath('/etc')
  3. >>> os.fspath(p)
  4. '/etc'

路徑的字符串表示法為它自己原始的文件系統(tǒng)路徑(以原生形式,例如在 Windows 下使用反斜杠)。你可以傳遞給任何需要字符串形式路徑的函數(shù)。

 
 
 
 
  1. >>> p = PurePath('/etc')
  2. >>> str(p)
  3. '/etc'
  4. >>> p = PureWindowsPath('c:/Program Files')
  5. >>> str(p)
  6. 'c:\\Program Files'

類似地,在路徑上調(diào)用 bytes 將原始文件系統(tǒng)路徑作為字節(jié)對象給出,就像被 os.fsencode() 編碼一樣:

 
 
 
 
  1. >>> bytes(p)
  2. b'/etc'

備注

只推薦在 Unix 下調(diào)用 bytes。在 Windows, unicode 形式是文件系統(tǒng)路徑的規(guī)范表示法。

訪問個別部分

為了訪問路徑獨立的部分 (組件),使用以下特征屬性:

PurePath.parts

一個元組,可以訪問路徑的多個組件:

 
 
 
 
  1. >>> p = PurePath('/usr/bin/Python3')
  2. >>> p.parts
  3. ('/', 'usr', 'bin', 'python3')
  4. >>> p = PureWindowsPath('c:/Program Files/PSF')
  5. >>> p.parts
  6. ('c:\\', 'Program Files', 'PSF')

(注意盤符和本地根目錄是如何重組的)

方法和特征屬性

純路徑提供以下方法和特征屬性:

PurePath.drive

一個表示驅(qū)動器盤符或命名的字符串,如果存在:

 
 
 
 
  1. >>> PureWindowsPath('c:/Program Files/').drive
  2. 'c:'
  3. >>> PureWindowsPath('/Program Files/').drive
  4. ''
  5. >>> PurePosixPath('/etc').drive
  6. ''

UNC 分享也被認作驅(qū)動器:

 
 
 
 
  1. >>> PureWindowsPath('//host/share/foo.txt').drive
  2. '\\\\host\\share'

PurePath.root

一個表示(本地或全局)根的字符串,如果存在:

 
 
 
 
  1. >>> PureWindowsPath('c:/Program Files/').root
  2. '\\'
  3. >>> PureWindowsPath('c:Program Files/').root
  4. ''
  5. >>> PurePosixPath('/etc').root
  6. '/'

UNC 分享一樣擁有根:

 
 
 
 
  1. >>> PureWindowsPath('//host/share').root
  2. '\\'

如果路徑以超過兩個連續(xù)斜框打頭,PurePosixPath 會合并它們:

 
 
 
 
  1. >>> PurePosixPath('//etc').root
  2. '//'
  3. >>> PurePosixPath('///etc').root
  4. '/'
  5. >>> PurePosixPath('////etc').root
  6. '/'

備注

This behavior conforms to The Open Group Base Specifications Issue 6, paragraph 4.11 Pathname Resolution:

“以連續(xù)兩個斜杠打頭的路徑名可能會以具體實現(xiàn)所定義的方式被解讀,但是兩個以上的前綴斜杠則應當被當作一個斜杠來處理?!?/em>

PurePath.anchor

驅(qū)動器和根的聯(lián)合:

 
 
 
 
  1. >>> PureWindowsPath('c:/Program Files/').anchor
  2. 'c:\\'
  3. >>> PureWindowsPath('c:Program Files/').anchor
  4. 'c:'
  5. >>> PurePosixPath('/etc').anchor
  6. '/'
  7. >>> PureWindowsPath('//host/share').anchor
  8. '\\\\host\\share\\'

PurePath.parents

提供訪問此路徑的邏輯祖先的不可變序列:

 
 
 
 
  1. >>> p = PureWindowsPath('c:/foo/bar/setup.py')
  2. >>> p.parents[0]
  3. PureWindowsPath('c:/foo/bar')
  4. >>> p.parents[1]
  5. PureWindowsPath('c:/foo')
  6. >>> p.parents[2]
  7. PureWindowsPath('c:/')

在 3.10 版更改: parents 序列現(xiàn)在支持 切片 和負的索引值。

PurePath.parent

此路徑的邏輯父路徑:

 
 
 
 
  1. >>> p = PurePosixPath('/a/b/c/d')
  2. >>> p.parent
  3. PurePosixPath('/a/b/c')

你不能超過一個 anchor 或空路徑:

 
 
 
 
  1. >>> p = PurePosixPath('/')
  2. >>> p.parent
  3. PurePosixPath('/')
  4. >>> p = PurePosixPath('.')
  5. >>> p.parent
  6. PurePosixPath('.')

備注

這是一個單純的詞法操作,因此有以下行為:

 
 
 
 
  1. >>> p = PurePosixPath('foo/..')
  2. >>> p.parent
  3. PurePosixPath('foo')

If you want to walk an arbitrary filesystem path upwards, it is recommended to first call Path.resolve() so as to resolve symlinks and eliminate ".." components.

PurePath.name

一個表示最后路徑組件的字符串,排除了驅(qū)動器與根目錄,如果存在的話:

 
 
 
 
  1. >>> PurePosixPath('my/library/setup.py').name
  2. 'setup.py'

UNC 驅(qū)動器名不被考慮:

 
 
 
 
  1. >>> PureWindowsPath('//some/share/setup.py').name
  2. 'setup.py'
  3. >>> PureWindowsPath('//some/share').name
  4. ''

PurePath.suffix

最后一個組件的文件擴展名,如果存在:

 
 
 
 
  1. >>> PurePosixPath('my/library/setup.py').suffix
  2. '.py'
  3. >>> PurePosixPath('my/library.tar.gz').suffix
  4. '.gz'
  5. >>> PurePosixPath('my/library').suffix
  6. ''

PurePath.suffixes

路徑的文件擴展名列表:

 
 
 
 
  1. >>> PurePosixPath('my/library.tar.gar').suffixes
  2. ['.tar', '.gar']
  3. >>> PurePosixPath('my/library.tar.gz').suffixes
  4. ['.tar', '.gz']
  5. >>> PurePosixPath('my/library').suffixes
  6. []

PurePath.stem

最后一個路徑組件,除去后綴:

 
 
 
 
  1. >>> PurePosixPath('my/library.tar.gz').stem
  2. 'library.tar'
  3. >>> PurePosixPath('my/library.tar').stem
  4. 'library'
  5. >>> PurePosixPath('my/library').stem
  6. 'library'

PurePath.as_posix()

返回使用正斜杠(/)的路徑字符串:

 
 
 
 
  1. >>> p = PureWindowsPath('c:\\windows')
  2. >>> str(p)
  3. 'c:\\windows'
  4. >>> p.as_posix()
  5. 'c:/windows'

PurePath.as_uri()

將路徑表示為 file URL。如果并非絕對路徑,拋出 ValueError。

 
 
 
 
  1. >>> p = PurePosixPath('/etc/passwd')
  2. >>> p.as_uri()
  3. 'file:///etc/passwd'
  4. >>> p = PureWindowsPath('c:/Windows')
  5. >>> p.as_uri()
  6. 'file:///c:/Windows'

PurePath.is_absolute()

返回此路徑是否為絕對路徑。如果路徑同時擁有驅(qū)動器符與根路徑(如果風格允許)則將被認作絕對路徑。

 
 
 
 
  1. >>> PurePosixPath('/a/b').is_absolute()
  2. True
  3. >>> PurePosixPath('a/b').is_absolute()
  4. False
  5. >>> PureWindowsPath('c:/a/b').is_absolute()
  6. True
  7. >>> PureWindowsPath('/a/b').is_absolute()
  8. False
  9. >>> PureWindowsPath('c:').is_absolute()
  10. False
  11. >>> PureWindowsPath('//some/share').is_absolute()
  12. True

PurePath.is_relative_to(\other*)

返回此路徑是否相對于 other 的路徑。

 
 
 
 
  1. >>> p = PurePath('/etc/passwd')
  2. >>> p.is_relative_to('/etc')
  3. True
  4. >>> p.is_relative_to('/usr')
  5. False

3.9 新版功能.

PurePath.is_reserved()

在 PureWindowsPath,如果路徑是被 Windows 保留的則返回 True,否則 False。在 PurePosixPath,總是返回 False。

 
 
 
 
  1. >>> PureWindowsPath('nul').is_reserved()
  2. True
  3. >>> PurePosixPath('nul').is_reserved()
  4. False

當保留路徑上的文件系統(tǒng)被調(diào)用,則可能出現(xiàn)玄學失敗或者意料之外的效應。

PurePath.joinpath(\other*)

調(diào)用此方法等同于將每個 other 參數(shù)中的項目連接在一起:

 
 
 
 
  1. >>> PurePosixPath('/etc').joinpath('passwd')
  2. PurePosixPath('/etc/passwd')
  3. >>> PurePosixPath('/etc').joinpath(PurePosixPath('passwd'))
  4. PurePosixPath('/etc/passwd')
  5. >>> PurePosixPath('/etc').joinpath('init.d', 'apache2')
  6. PurePosixPath('/etc/init.d/apache2')
  7. >>> PureWindowsPath('c:').joinpath('/Program Files')
  8. PureWindowsPath('c:/Program Files')

PurePath.match(pattern)

將此路徑與提供的通配符風格的模式匹配。如果匹配成功則返回 True,否則返回 False

如果 pattern 是相對的,則路徑可以是相對路徑或絕對路徑,并且匹配是從右側(cè)完成的:

 
 
 
 
  1. >>> PurePath('a/b.py').match('*.py')
  2. True
  3. >>> PurePath('/a/b/c.py').match('b/*.py')
  4. True
  5. >>> PurePath('/a/b/c.py').match('a/*.py')
  6. False

如果 pattern 是絕對的,則路徑必須是絕對的,并且路徑必須完全匹配:

 
 
 
 
  1. >>> PurePath('/a.py').match('/*.py')
  2. True
  3. >>> PurePath('a/b.py').match('/*.py')
  4. False

與其他方法一樣,是否大小寫敏感遵循平臺的默認規(guī)則:

 
 
 
 
  1. >>> PurePosixPath('b.py').match('*.PY')
  2. False
  3. >>> PureWindowsPath('b.py').match('*.PY')
  4. True

PurePath.relative_to(\other*)

計算此路徑相對 other 表示路徑的版本。如果不可計算,則拋出 ValueError:

 
 
 
 
  1. >>> p = PurePosixPath('/etc/passwd')
  2. >>> p.relative_to('/')
  3. PurePosixPath('etc/passwd')
  4. >>> p.relative_to('/etc')
  5. PurePosixPath('passwd')
  6. >>> p.relative_to('/usr')
  7. Traceback (most recent call last):
  8. File "", line 1, in
  9. File "pathlib.py", line 694, in relative_to
  10. .format(str(self), str(formatted)))
  11. ValueError: '/etc/passwd' is not in the subpath of '/usr' OR one path is relative and the other absolute.

注意:此函數(shù)是 PurePath 的一部分并且適用于字符串。 它不會檢查或訪問下層的文件結(jié)構(gòu)。

PurePath.with_name(name)

返回一個新的路徑并修改 name。如果原本路徑?jīng)]有 name,ValueError 被拋出:

 
 
 
 
  1. >>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
  2. >>> p.with_name('setup.py')
  3. PureWindowsPath('c:/Downloads/setup.py')
  4. >>> p = PureWindowsPath('c:/')
  5. >>> p.with_name('setup.py')
  6. Traceback (most recent call last):
  7. File "", line 1, in
  8. File "/home/antoine/cpython/default/Lib/pathlib.py", line 751, in with_name
  9. raise ValueError("%r has an empty name" % (self,))
  10. ValueError: PureWindowsPath('c:/') has an empty name

PurePath.with_stem(stem)

返回一個帶有修改后 stem 的新路徑。 如果原路徑?jīng)]有名稱,則會引發(fā) ValueError:

 
 
 
 
  1. >>> p = PureWindowsPath('c:/Downloads/draft.txt')
  2. >>> p.with_stem('final')
  3. PureWindowsPath('c:/Downloads/final.txt')
  4. >>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
  5. >>> p.with_stem('lib')
  6. PureWindowsPath('c:/Downloads/lib.gz')
  7. >>> p = PureWindowsPath('c:/')
  8. >>> p.with_stem('')
  9. Traceback (most recent call last):
  10. File "", line 1, in
  11. File "/home/antoine/cpython/default/Lib/pathlib.py", line 861, in with_stem
  12. return self.with_name(stem + self.suffix)
  13. File "/home/antoine/cpython/default/Lib/pathlib.py", line 851, in with_name
  14. raise ValueError("%r has an empty name" % (self,))
  15. ValueError: PureWindowsPath('c:/') has an empty name

3.9 新版功能.

PurePath.with_suffix(suffix)

返回一個新的路徑并修改 suffix。如果原本的路徑?jīng)]有后綴,新的 suffix 則被追加以代替。如果 suffix 是空字符串,則原本的后綴被移除:

 
 
 
 
  1. >>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
  2. >>> p.with_suffix('.bz2')
  3. PureWindowsPath('c:/Downloads/pathlib.tar.bz2')
  4. >>> p = PureWindowsPath('README')
  5. >>> p.with_suffix('.txt')
  6. PureWindowsPath('README.txt')
  7. >>> p = PureWindowsPath('README.txt')
  8. >>> p.with_suffix('')
  9. PureWindowsPath('README')

具體路徑

具體路徑是純路徑的子類。除了后者提供的操作之外,它們還提供了對路徑對象進行系統(tǒng)調(diào)用的方法。有三種方法可以實例化具體路徑:

class pathlib.Path(\pathsegments*)

一個 PurePath 的子類,此類以當前系統(tǒng)的路徑風格表示路徑(實例化為 PosixPath 或 WindowsPath):

 
 
 
 
  1. >>> Path('setup.py')
  2. PosixPath('setup.py')

pathsegments 參數(shù)的指定和 PurePath 相同。

class pathlib.PosixPath(\pathsegments*)

一個 Path 和 PurePosixPath 的子類,此類表示一個非 Windows 文件系統(tǒng)的具體路徑:

 
 
 
 
  1. >>> PosixPath('/etc')
  2. PosixPath('/etc')

pathsegments 參數(shù)的指定和 PurePath 相同。

class pathlib.WindowsPath(\pathsegments*)

Path 和 PureWindowsPath 的子類,從類表示一個 Windows 文件系統(tǒng)的具體路徑:

 
 
 
 
  1. >>> WindowsPath('c:/Program Files/')
  2. WindowsPath('c:/Program Files')

pathsegments 參數(shù)的指定和 PurePath 相同。

你只能實例化與當前系統(tǒng)風格相同的類(允許系統(tǒng)調(diào)用作用于不兼容的路徑風格可能在應用程序中導致缺陷或失?。?

 
 
 
 
  1. >>> import os
  2. >>> os.name
  3. 'posix'
  4. >>> Path('setup.py')
  5. PosixPath('setup.py')
  6. >>> PosixPath('setup.py')
  7. PosixPath('setup.py')
  8. >>> WindowsPath('setup.py')
  9. Traceback (most recent call last):
  10. File "", line 1, in
  11. File "pathlib.py", line 798, in __new__
  12. % (cls.__name__,))
  13. NotImplementedError: cannot instantiate 'WindowsPath' on your system

方法

除純路徑方法外,實體路徑還提供以下方法。 如果系統(tǒng)調(diào)用失?。ɡ缫驗槁窂讲淮嬖冢┻@些方法中許多都會引發(fā) OSError。

在 3.8 版更改: 對于包含 OS 層級無法表示字符的路徑,exists(), is_dir(), is_file(), is_mount(), is_symlink(), is_block_device(), is_char_device(), is_fifo(), is_socket() 現(xiàn)在將返回 False 而不是引發(fā)異常。

classmethod Path.cwd()

返回一個新的表示當前目錄的路徑對象(和 os.getcwd() 返回的相同):

 
 
 
 
  1. >>> Path.cwd()
  2. PosixPath('/home/antoine/pathlib')

classmethod Path.home()

返回一個表示用戶家目錄的新路徑對象(與帶 ~ 構(gòu)造的 os.path.expanduser() 所返回的相同)。 如果無法解析家目錄,則會引發(fā) RuntimeError。

 
 
 
 
  1. >>> Path.home()
  2. PosixPath('/home/antoine')

3.5 新版功能.

Path.stat(**, follow_symlinks=True*)

返回一個 os.stat_result 對象,其中包含有關(guān)此路徑的信息,例如 os.stat()。 結(jié)果會在每次調(diào)用此方法時重新搜索。

此方法通常會跟隨符號鏈接;要對 symlink 使用 stat 請?zhí)砑訁?shù) follow_symlinks=False,或者使用 lstat()。

 
 
 
 
  1. >>> p = Path('setup.py')
  2. >>> p.stat().st_size
  3. 956
  4. >>> p.stat().st_mtime
  5. 1327883547.852554

在 3.10 版更改: 增加了 follow_symlinks 形參。

Path.chmod(mode, **, follow_symlinks=True*)

改變文件模式和權(quán)限,和 os.chmod() 一樣。

此方法通常會跟隨符號鏈接。 某些 Unix 變種支持改變 symlink 本身的權(quán)限;在這些平臺上你可以添加參數(shù) follow_symlinks=False,或者使用 lchmod()。

 
 
 
 
  1. >>> p = Path('setup.py')
  2. >>> p.stat().st_mode
  3. 33277
  4. >>> p.chmod(0o444)
  5. >>> p.stat().st_mode
  6. 33060

在 3.10 版更改: 增加了 follow_symlinks 形參。

Path.exists()

此路徑是否指向一個已存在的文件或目錄:

 
 
 
 
  1. >>> Path('.').exists()
  2. True
  3. >>> Path('setup.py').exists()
  4. True
  5. >>> Path('/etc').exists()
  6. True
  7. >>> Path('nonexistentfile').exists()
  8. False

備注

如果路徑指向一個符號鏈接, exists() 返回此符號鏈接是否指向存在的文件或目錄。

Path.expanduser()

返回帶有擴展 ~~user 構(gòu)造的新路徑,與 os.path.expanduser() 所返回的相同。 如果無法解析家目錄,則會引發(fā) RuntimeError。

 
 
 
 
  1. >>> p = PosixPath('~/films/Monty Python')
  2. >>> p.expanduser()
  3. PosixPath('/home/eric/films/Monty Python')

3.5 新版功能.

Path.glob(pattern)

解析相對于此路徑的通配符 pattern,產(chǎn)生所有匹配的文件:

 
 
 
 
  1. >>> sorted(Path('.').glob('*.py'))
  2. [PosixPath('pathlib.py'), PosixPath('setup.py'), PosixPath('test_pathlib.py')]
  3. >>> sorted(Path('.').glob('*/*.py'))
  4. [PosixPath('docs/conf.py')]

pattern 的形式與 fnmatch 的相同,還增加了 “**“ 表示 “此目錄以及所有子目錄,遞歸”。 換句話說,它啟用遞歸通配:

 
 
 
 
  1. >>> sorted(Path('.').glob('**/*.py'))
  2. [PosixPath('build/lib/pathlib.py'),
  3. PosixPath('docs/conf.py'),
  4. PosixPath('pathlib.py'),
  5. PosixPath('setup.py'),
  6. PosixPath('test_pathlib.py')]

備注

在一個較大的目錄樹中使用 “**“ 模式可能會消耗非常多的時間。

引發(fā)一個 審計事件 pathlib.Path.glob 附帶參數(shù) self, pattern。

在 3.11 版更改: Return only directories if pattern ends with a pathname components separator (sep or altsep).

Path.group()

返回擁有此文件的用戶組。如果文件的 GID 無法在系統(tǒng)數(shù)據(jù)庫中找到,將拋出 KeyError 。

Path.is_dir()

如果路徑指向一個目錄(或者一個指向目錄的符號鏈接)則返回 True,如果指向其他類型的文件則返回 False。

當路徑不存在或者是一個破損的符號鏈接時也會返回 False;其他錯誤(例如權(quán)限錯誤)被傳播。

Path.is_file()

如果路徑指向一個正常的文件(或者一個指向正常文件的符號鏈接)則返回 True,如果指向其他類型的文件則返回 False。

當路徑不存在或者是一個破損的符號鏈接時也會返回 False;其他錯誤(例如權(quán)限錯誤)被傳播。

Path.is_mount()

如果路徑是一個 掛載點 :在文件系統(tǒng)中被其他不同的文件系統(tǒng)掛載的地點。在 POSIX 系統(tǒng),此函數(shù)檢查 path 的父級 —— path/.. 是否處于一個和 path 不同的設(shè)備中,或者 file:path/.. 和 path 是否指向相同設(shè)備的相同 i-node —— 這能檢測所有 Unix 以及 POSIX 變種上的掛載點。 Windows 上未實現(xiàn)。

3.7 新版功能.

Path.is_symlink()

如果路徑指向符號鏈接則返回 True, 否則 False。

如果路徑不存在也返回 False;其他錯誤(例如權(quán)限錯誤)被傳播。

Path.is_socket()

如果路徑指向一個 Unix socket 文件(或者指向 Unix socket 文件的符號鏈接)則返回 True,如果指向其他類型的文件則返回 False

當路徑不存在或者是一個破損的符號鏈接時也會返回 False;其他錯誤(例如權(quán)限錯誤)被傳播。

Path.is_fifo()

如果路徑指向一個先進先出存儲(或者指向先進先出存儲的符號鏈接)則返回 True ,指向其他類型的文件則返回 False

當路徑不存在或者是一個破損的符號鏈接時也會返回 False;其他錯誤(例如權(quán)限錯誤)被傳播。

Path.is_block_device()

如果文件指向一個塊設(shè)備(或者指向塊設(shè)備的符號鏈接)則返回 True,指向其他類型的文件則返回 False

當路徑不存在或者是一個破損的符號鏈接時也會返回 False;其他錯誤(例如權(quán)限錯誤)被傳播。

Path.is_char_device()

如果路徑指向一個字符設(shè)備(或指向字符設(shè)備的符號鏈接)則返回 True,指向其他類型的文件則返回 False。

當路徑不存在或者是一個破損的符號鏈接時也會返回 False;其他錯誤(例如權(quán)限錯誤)被傳播。

Path.iterdir()

當路徑指向一個目錄時,產(chǎn)生該路徑下的對象的路徑:

 
 
 
 
  1. >>> p = Path('docs')
  2. >>> for child in p.iterdir(): child
  3. ...
  4. PosixPath('docs/conf.py')
  5. PosixPath('docs/_templates')
  6. PosixPath('docs/make.bat')
  7. PosixPath('docs/index.rst')
  8. PosixPath('docs/_build')
  9. PosixPath('docs/_static')
  10. PosixPath('docs/Makefile')

子條目會以任意順序生成,并且不包括特殊條目 '.''..'。 如果迭代器創(chuàng)建之后有文件在目錄中被移除或添加,是否要包括該文件所對應的路徑對象并沒有明確規(guī)定。

Path.lchmod(mode)

就像 Path.chmod() 但是如果路徑指向符號鏈接則是修改符號鏈接的模式,而不是修改符號鏈接的目標。

Path.lstat()

就和 Path.stat() 一樣,但是如果路徑指向符號鏈接,則是返回符號鏈接而不是目標的信息。

Path.mkdir(mode=0o777, parents=False, exist_ok=False
當前文章:創(chuàng)新互聯(lián)Python教程:pathlib—-面向?qū)ο蟮奈募到y(tǒng)路徑
鏈接地址:http://www.dlmjj.cn/article/djdjhph.html