如何在 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 專案中更改副檔名,無論您是在處理單個檔案還是批次處理檔案。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP