?大家好!我是一個熱衷于分享IT技術的up主。在這個公眾號里,我將為大家?guī)碜钚?、最實用的技術干貨,從編程語言到前沿科技,從軟件開發(fā)到網(wǎng)絡安全。希望通過我的分享,能夠幫助更多的小伙伴提升技術水平,共同成長!歡迎關注,一起探索科技的魅力吧! ?在日常工作中,我們常常需要對大量文件進行重命名操作。這種需求可能源于文件名不規(guī)范、需要統(tǒng)一格式,或是為了便于文件管理。然而,手動修改大量文件名不僅費時費力,還容易出錯。本文將介紹如何使用Python 腳本實現(xiàn)批量修改文件名,幫助你提高工作效率。 為什么選擇Python 來修改文件名?Python 作為一種強大且易學的編程語言,在處理文件和目錄操作時表現(xiàn)尤為出色。借助 Python 的內置庫 os 和 os.path ,我們可以輕松地實現(xiàn)文件遍歷、路徑操作和文件名修改等功能。相比于手動操作或依賴其他工具,Python 腳本的優(yōu)勢在于: 自動化:一次編寫,多次執(zhí)行,適用于各種場景。 可定制:根據(jù)不同需求,自由定義文件名修改規(guī)則。
核心實現(xiàn)思路在實現(xiàn)批量修改文件名的過程中,主要涉及以下幾個步驟: 遍歷目標目錄:通過Python 的 os.walk() 方法遍歷指定目錄下的所有文件和子目錄。 過濾文件和目錄:區(qū)分文件和目錄,僅對文件進行重命名。 定義重命名規(guī)則:根據(jù)實際需求定義文件名修改的規(guī)則,如統(tǒng)一大小寫、添加前綴或后綴、替換部分字符串等。 執(zhí)行重命名操作:調用 os.rename() 方法,將舊文件名替換為新文件名。
示例代碼與詳細解析以下是一個完整的Python腳本,示范如何批量修改目錄中所有文件的文件名,并排除目錄本身: import os import logging
# 配置日志 logging.basicConfig( filename='file_rename.log', # 日志文件名 level=logging.INFO, # 日志級別 format='%(asctime)s - %(levelname)s - %(message)s', # 日志格式 )
def rename_files_in_directory(directory, rename_function): try: # 遍歷目錄中的所有文件和子目錄 for root, dirs, files in os.walk(directory): for file_name in files: try: # 獲取文件的完整路徑 old_file_path = os.path.join(root, file_name) # 使用傳入的重命名函數(shù)生成新文件名 new_file_name = rename_function(file_name) new_file_path = os.path.join(root, new_file_name) # 檢查新文件名是否已存在,避免沖突 if os.path.exists(new_file_path): logging.warning(f"File already exists: {new_file_path}, skipping rename.") continue # 重命名文件 os.rename(old_file_path, new_file_path) logging.info(f"Renamed: {old_file_path} -> {new_file_path}") except Exception as e: # 捕獲單個文件重命名時的異常并記錄錯誤信息 logging.error(f"Failed to rename {file_name} in {root}: {str(e)}") except Exception as e: # 捕獲整個遍歷過程中可能出現(xiàn)的異常 logging.critical(f"Critical error while processing directory {directory}: {str(e)}")
def simple_rename(file_name): # 簡單的重命名函數(shù),將文件名全部改為小寫 return file_name.lower()
# 指定需要處理的目錄路徑 directory_path = '/path/to/your/directory'
# 調用重命名函數(shù) rename_files_in_directory(directory_path, simple_rename)
os.walk() 的使用
os.walk() 是一個生成器,它允許我們遍歷指定目錄下的所有子目錄和文件。對于每個目錄,os.walk() 返回一個三元組 (root, dirs, files) ,其中 root 是當前目錄路徑,dirs 是該目錄下的子目錄列表,files 是該目錄下的文件列表。
文件名重命名規(guī)則在示例中,我們定義了一個簡單的重命名函數(shù) simple_rename() ,它將文件名轉換為小寫。你可以根據(jù)自己的需求,修改或擴展這個函數(shù)。例如,你可以添加一個前綴或后綴、替換特定字符、按序號重命名等。 def custom_rename(file_name): # 添加前綴和后綴示例 return f"prefix_{file_name}_suffix"
os.rename() 實現(xiàn)文件重命名
os.rename(old_path, new_path) 方法用于重命名文件或目錄。它接受兩個參數(shù):舊文件路徑和新文件路徑。如果新文件路徑已存在,將會覆蓋舊文件。因此,在執(zhí)行批量重命名操作前,務必確保新文件名不會沖突。
腳本演示例如某個目錄有如下圖所示的文件,由于項目的結算需要,對文件名有特殊的要求。現(xiàn)需要把下圖所有文件名格式修改成災備中心備份系統(tǒng)巡檢表運行情況(2024年6月1日).pdf 。這種格式的名稱。 因此,我們只需要對simple_rename 這個函數(shù)進行改寫即可實現(xiàn)需求。關鍵代碼如下: def simple_rename(file_name): # 簡單的重命名函數(shù),將文件名全部改為小寫 return "災備中心備份系統(tǒng)巡檢表運行情況({}).pdf".format(file_name.split("-")[1][0:11])
執(zhí)行成功后,該目錄下的所有文件都重新命名了,如下圖所示: 五、總結通過本文的介紹,相信你已經掌握了如何利用Python腳本實現(xiàn)批量修改文件名。這種方法不僅靈活高效,還可以根據(jù)不同需求進行定制和擴展。在日常工作中,借助Python 腳本,你可以更輕松地處理文件管理任務,提高工作效率。如果你有更多的文件操作需求,不妨嘗試用Python 來解決,相信你會發(fā)現(xiàn)它的更多潛力。
腳本獲取方式上述腳本已經上傳上傳到gitee,有需要的小伙伴可以自行獲取。gitee上的倉庫主要是分享一些工作中常用的腳本。小伙伴可以frok或者watch倉庫,這樣有更新可以及時關注到。 倉庫地址: https:///didiplus/script
|