如何在Python中更改副檔名?


副檔名透過幫助識別檔案包含的內容型別發揮著至關重要的作用。更改副檔名的任務在各種用例中很常見,例如轉換檔案格式、重新命名檔案以確保相容性或確保特定應用程式正確解釋檔案。Python 作為一種用途廣泛且功能強大的程式語言,提供了多種方法來更改檔案的副檔名。

在這篇資訊豐富且富有啟發性的文章中,我們將探討在 Python 中更改副檔名的不同技術。我們將提供分步說明和程式碼示例來指導您完成此過程。無論您是喜歡使用字串方法操作檔案路徑,使用“os”模組、“pathlib”模組還是第三方庫,本指南都將為您提供輕鬆更改 Python 專案中副檔名的知識。

讓我們開始這段使用 Python 進行檔案處理的旅程,學習如何更改副檔名!

使用字串方法更改副檔名

更改副檔名最簡單的方法之一是利用字串方法來操作檔名。此方法包括根據現有副檔名拆分檔名,修改副檔名,並將名稱和副檔名重新組合以形成新的檔名。

示例

  • 在下面的程式碼中,我們定義了 `change_file_extension_with_string_methods()` 函式,該函式將 `filename` 和 `new_extension` 作為輸入,並返回帶有更改副檔名的新的檔名。

  • 該函式首先檢查檔名是否包含點 (.) 以確定它是否已具有副檔名。如果它有,我們使用 `rsplit('.', 1)` 拆分名稱和舊副檔名。

  • `rsplit('.', 1)` 方法在 '.' 的最後一次出現處拆分字串,以處理名稱中包含點的檔名。

  • 然後,我們將名稱與 `new_extension` 和一個點 (.) 連線起來,以形成新的檔名 (`new_filename`)。

  • 如果檔名沒有現有的副檔名,我們只需將 `new_extension` 連線到檔名以建立新的檔名。

def change_file_extension_with_string_methods(filename, new_extension):
    if '.' in filename:
        name, old_extension = filename.rsplit('.', 1)
        new_filename = name + '.' + new_extension
    else:
        new_filename = filename + '.' + new_extension
    return new_filename

使用 os.path 模組更改副檔名

“os.path”模組提供了一種跨平臺的方式來處理 Python 中的檔案路徑。我們可以使用此模組來操作檔名並更改其副檔名。

示例

  • 在此示例中,我們匯入了“os”模組,該模組提供了與作業系統互動(包括檔案和目錄操作)的函式。

  • `change_file_extension_with_os_path()` 函式將 `filename` 和 `new_extension` 作為輸入,並返回帶有更改副檔名的新的檔名。

  • 我們使用 `os.path.splitext(filename)` 將檔名拆分為基本名稱(不帶副檔名的名稱)和副檔名。

  • `os.path.splitext()` 函式返回一個元組,其中包含給定檔名的基本名稱和副檔名。

  • 然後,我們將基本名稱與 `new_extension` 和一個點 (.) 連線起來,以形成新的檔名 (`new_filename`)。

import os

def change_file_extension_with_os_path(filename, new_extension):
    base_name = os.path.splitext(filename)[0]
    new_filename = base_name + '.' + new_extension
    return new_filename

使用 pathlib 模組更改副檔名

“pathlib”模組提供了一種面向物件的方法來處理 Python 中的檔案路徑。我們可以利用“Path”類來操作檔名並更改其副檔名。

示例

  • 在此示例中,我們從“pathlib”模組匯入了“Path”類,該類表示檔案系統路徑。

  • `change_file_extension_with_pathlib()` 函式將 `filename` 和 `new_extension` 作為輸入,並返回帶有更改副檔名的新的檔名。

  • 我們使用 `Path(filename)` 建立一個“Path”物件來表示輸入檔名。

  • 我們使用“Path”物件的 `with_suffix()` 方法將副檔名更改為 `new_extension`。

  • `with_suffix()` 方法返回一個具有更新副檔名的新的“Path”物件,我們將其儲存在 `new_filename` 變數中。

from pathlib import Path

def change_file_extension_with_pathlib(filename, new_extension):
    path_object = Path(filename)
    new_filename = path_object.with_suffix('.' + new_extension)
    return new_filename

使用 shutil 模組更改副檔名

Python 中的“shutil”模組提供了高階檔案操作。雖然其主要目的是處理檔案複製和刪除,但它也可以用於更改副檔名。

示例

  • 在此示例中,我們匯入了“shutil”模組,該模組提供了高階檔案操作函式。

  • `change_file_extension_with_shutil()` 函式將 `src_filename`(具有當前副檔名的檔案)和 `dst_filename`(具有所需副檔名的檔案)作為輸入,並透過重新命名來更改檔案的副檔名。

  • 我們使用 `shutil.move(src_filename, dst_filename)` 將檔案從 `src_filename` 移動到 `dst_filename`。

  • `shutil.move()` 函式有效地重新命名檔案並在此過程中更改其副檔名。

import shutil

def change_file_extension_with_shutil(src_filename, dst_filename):
    shutil.move(src_filename, dst_filename)

使用 pyrenamer 庫更改副檔名

如果您想使用新的副檔名重新命名檔案,您可以使用內建的 os 模組來實現這一點,無需任何外部庫。以下是如何使用 os.rename 函式更改副檔名的示例

我們使用 `os.path.isfile()` 函式檢查具有給定檔名的檔案是否存在。然後,我們使用 `os.path.splitext()` 構造具有所需 `new_extension` 的新檔名。最後,我們使用 `os.rename()` 執行重新命名操作。

import os

def change_file_extension(filename, new_extension):
    # Check if the file exists before renaming
    if os.path.isfile(filename):
        file_name, old_extension = os.path.splitext(filename)
        new_filename = file_name + '.' + new_extension
        try:
            os.rename(filename, new_filename)
            print(f"File '{filename}' renamed to '{new_filename}' with new extension.")
        except Exception as e:
            print(f"Error occurred while renaming the file: {e}")
    else:
        print(f"File '{filename}' not found.")

# Example usage
filename = 'example.txt'
new_extension = 'pdf'
change_file_extension(filename, new_extension)

輸出

File 'example.txt' not found.

更改副檔名是檔案處理和操作中的常規任務。在本文中,我們探討了在 Python 中更改副檔名的各種方法。我們學習瞭如何使用字串方法操作檔名,利用“os.path”和“pathlib”模組,使用“shutil”模組進行高階檔案操作,以及使用“os.rename”函式進行批次重新命名任務。

有了這些知識,您就可以自信地在 Python 專案中更改副檔名,無論您是處理單個檔案還是批次處理檔案。

更新於:2023年9月11日

14K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.