HOWTO · Python

在 Python 中獲取副檔名

它演示瞭如何在 Python 中獲取副檔名。

本頁內容

本教程將介紹如何在 Python 中從檔名中獲取副檔名。

在 Python 中使用 os.path 模組從檔案中提取副檔名

Python 的模組 os.path 預製了有用的實用函式來操作作業系統的檔案路徑,包括開啟、儲存和更新,以及從檔案路徑中獲取資訊。

我們將使用這個模組來獲取 Python 中的副檔名。

os.path 有一個函式 splitext(),用來分割給定檔案路徑的根和副檔名。該函式返回一個包含根字串和擴充套件字串的元組。

讓我們提供一個帶有 docx 副檔名的檔案路徑示例。

/Users/user/Documents/sampledoc.docx

預期的輸出應該是副檔名 .docx

宣告兩個獨立的變數 extensionroot 來捕獲 splitext() 的結果。

import os

path = "/Users/user/Documents/sampledoc.docx"
root, extension = os.path.splitext(path)

print("Root:", root)
print("extension:", extension)

輸出:

Root: /Users/user/Documents/sampledoc
Extension: .docx

副檔名現在已經從根檔案路徑成功返回。

在 Python 中使用 pathlib 模組從檔案中提取副檔名

pathlib 是一個 Python 模組,它包含代表檔案路徑的類,併為這些類實現實用函式和常量。

pathlib.Path() 接受一個路徑字串作為引數並返回一個新的 Path 物件。

pathlib.Path 物件有屬性 suffix,返回檔案擴充套件資訊。

import pathlib

path = pathlib.Path("/Users/user/Documents/sampledoc.docx")

print("Parent:", path.parent)
print("Filename:", path.name)
print("Extension:", path.suffix)

除了根目錄外,我們還可以通過簡單呼叫 Path 物件內的屬性 parentname 來獲取給定檔案路徑的父檔案路徑和實際檔名。

輸出:

Parent: /Users/user/Documents
Filename: sampledoc.docx
Extension: .docx

如果副檔名是 .tar.gz.tar.bz2 呢?

pathlib 還提供了一個屬性,用於處理有多個字尾的檔案。Path 物件中的屬性 suffixes 是一個包含所有給定檔案字尾的列表。如果我們使用上面的例子並列印出 suffixes 屬性。

import pathlib

path = pathlib.Path("/Users/user/Documents/sampledoc.docx")

print("Suffix(es):", path.suffixes)

輸出:

Suffix(es): ['.docx']

所以即使只有一個字尾,輸出的結果也會是一個列表。

現在試試用 .tar.gz 副檔名的例子。要將列表轉換為單字串,可以在一個空字串上使用 join() 函式,並接受 suffixes 屬性作為引數。

import pathlib

path = pathlib.Path("/Users/user/Documents/app_sample.tar.gz")

print("Parent:", path.parent)
print("Filename:", path.name)
print("Extension:", "".join(path.suffixes))

輸出:

Parent: /Users/user/Documents
Filename: app_sample.tar.gz
Extension: .tar.gz

現在顯示的是實際的副檔名,而不是一個列表。

總之,ospathlib 這兩個模組提供了在 Python 中從檔案路徑中獲取副檔名的方便方法。

os 模組有一個函式 splitext,用於將根和檔名從副檔名中分離出來。pathlib 建立一個 Path 物件,並簡單地將副檔名儲存在 suffix 屬性中。

如果你預計一個檔案中有多個副檔名,最好使用 pathlib,因為它使用 suffixes 屬性為多個副檔名提供了輕鬆的支援。