天天看點

Python處理檔案系統路徑,pathlib庫使用

作者:測開人小江

pathlib是Python3.4及以後版本中的一個内置類庫,它提供了一種簡單而直覺的方式來處理檔案系統路徑,同時也能夠輕松地處理各種不同類型的路徑。

在本教程中,我們将介紹如何使用pathlib類庫來操作檔案路徑。

建立一個Path對象

pathlib庫中的主要對象是Path類,它表示檔案或目錄的路徑。要使用Path類,您需要首先建立一個Path對象。

from pathlib import Path

# 絕對路徑
path = Path('/usr/bin/python3')

# 相對路徑
path = Path('file.txt')
           

上面的代碼示範了如何使用Path類來建立一個絕對路徑和一個相對路徑的對象。

擷取路徑資訊

Path對象提供了一些方法來擷取路徑的資訊。下面是一些最常用的方法:

  • name: 傳回路徑的最後一個組成部分的名稱
  • parent: 傳回路徑的上一級目錄
  • parts: 傳回路徑中的所有部分
  • exists(): 檢查路徑是否存在
  • is_dir(): 檢查路徑是否為一個目錄
  • is_file(): 檢查路徑是否為一個檔案
from pathlib import Path

path = Path('/usr/bin/python3')

print(path.name)   # python3
print(path.parent) # /usr/bin
print(path.parts)  # ('/', 'usr', 'bin', 'python3')

if path.exists():
    if path.is_dir():
        print('Path is a directory.')
    elif path.is_file():
        print('Path is a file.')
else:
    print('Path does not exist.')
           

上面的代碼将傳回python3作為路徑的名稱,/usr/bin作為路徑的上級目錄,('/', 'usr', 'bin', 'python3')作為路徑的所有部分。

操作路徑

Path對象還提供了一些方法來操作路徑。下面是一些最常用的方法:

  • joinpath(): 連接配接兩個或多個路徑元件,并傳回一個新的Path對象
  • with_suffix(): 更改路徑的檔案擴充名
  • resolve(): 傳回絕對路徑
  • relative_to(): 傳回相對路徑
from pathlib import Path

path = Path('/usr/bin')

new_path = path.joinpath('python3')

print(new_path)  # /usr/bin/python3

new_path = new_path.with_suffix('.txt')

print(new_path)  # /usr/bin/python3.txt

absolute_path = new_path.resolve()

print(absolute_path)  # /usr/bin/python3.txt

relative_path = absolute_path.relative_to('/usr')

print(relative_path)  # bin/python3.txt
           

上面的代碼示範了如何使用Path對象的方法來連接配接路徑、更改檔案擴充名、擷取絕對路徑和相對路徑。

周遊目錄

Path對象還提供了一些方法來周遊目錄。下面是一些最常用的方法:

  • glob(): 傳回一個生成器,該生成器按照通配符模式傳回所有比對的檔案和目錄
  • iterdir(): 傳回一個疊代器,該疊代器包含目錄中的所有條目
  • rglob(): 傳回一個生成器,該生成器按照通配符模式遞歸傳回所有比對的檔案和目錄
from pathlib import Path

path = Path('/usr/bin')

# 周遊目錄
for entry in path.iterdir():
    if entry.is_file():
        print(f'File: {entry.name}')
    elif entry.is_dir():
        print(f'Directory: {entry.name}')

# 周遊目錄及其子目錄
for entry in path.rglob('*'):
    if entry.is_file():
        print(f'File: {entry.name}')
    elif entry.is_dir():
        print(f'Directory: {entry.name}')
           

上面的代碼示範了如何使用Path對象的方法來周遊目錄和子目錄中的所有檔案和目錄。

建立、複制和删除檔案/目錄

Path對象還提供了一些方法來建立、複制和删除檔案和目錄。下面是一些最常用的方法:

  • mkdir(): 建立一個新目錄
  • mkdir(parents=True, exist_ok=True): 建立一個新目錄,如果父目錄不存在則遞歸建立
  • touch(): 建立一個新檔案
  • rename(): 重命名檔案或目錄
  • unlink(): 删除檔案
  • rmdir(): 删除空目錄
  • rmtree(): 遞歸删除目錄及其所有内容
from pathlib import Path

path = Path('file.txt')

# 建立一個新檔案
path.touch()

# 重命名檔案
path.rename('new_file.txt')

# 删除檔案
path.unlink()

# 建立一個新目錄
path.mkdir()

# 建立一個新目錄,如果父目錄不存在則遞歸建立
path = Path('path/to/new/directory')
path.mkdir(parents=True, exist_ok=True)

# 删除空目錄
path.rmdir()

# 遞歸删除目錄及其所有内容
path = Path('path/to/directory')
path.rmdir()
           

上面的代碼示範了如何使用Path對象的方法來建立、複制和删除檔案和目錄。

總結

在本教程中,我們介紹了如何使用pathlib類庫來處理檔案系統路徑。我們學習了如何建立Path對象、擷取路徑資訊、操作路徑、周遊目錄、建立、複制和删除檔案/目錄。pathlib類庫提供了一種更加簡單和直覺的方式來處理檔案系統路徑,并且它是Python3.4及以後版本中的一個内置類庫,是以無需安裝即可使用。