Python按照映射關(guān)系批量重命名文件
1、背景介紹
有時候我們?nèi)粘^k公的時候,經(jīng)常需要將批量文件,進行重命名,但是重命名是按照一定的規(guī)則,比如提供一個映射關(guān)系的表,如下圖:
那么我們可以Python中的shutil模塊對文件進行批量的操作,以此達到我們想要的效果
2、庫的安裝
庫 | 用途 | 安裝 |
---|---|---|
pandas | Excel讀取 | pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/ |
os | 獲取路徑 | 內(nèi)置庫無需安裝 |
json | 讀寫json文件 | 內(nèi)置庫無需安裝 |
3、核心代碼
①:重命名并移動文件
def rename_and_move_files(self): if not self.source_folder or not self.rules_folder: self.log_text.append('請確保已選擇源文件夾和規(guī)則文件夾!') return try: excel_file = os.listdir(self.rules_folder)[0] df = pd.read_excel(os.path.join(self.rules_folder, excel_file)) for index, row in df.iterrows(): old_name = row['源文件名'] new_name = row['新文件名'] old_file_path = os.path.join(self.source_folder, old_name) if os.path.isfile(old_file_path): new_file_path = os.path.join(self.target_folder, new_name) shutil.move(old_file_path, new_file_path) self.log_text.append(f"文件 '{old_name}' 已重命名為 '{new_name}' 并移動至文件夾【修改后】。") else: self.log_text.append(f"文件 '{old_name}' 未找到,保留在文件夾【數(shù)據(jù)源】。") self.log_text.append("文件重命名和移動操作完成!") except Exception as e: self.log_text.append(f"出現(xiàn)錯誤: {e}")
4、完整代碼
# -*- coding: UTF-8 -*- import os import pandas as pd import shutil def select_folder(prompt): folder = prompt if not os.path.isdir(folder): print(f"文件夾路徑 '{folder}' 無效,請重新輸入。") return select_folder(prompt) return folder def rename_and_move_files(source_folder, rules_folder, target_folder): if not os.path.exists(target_folder): os.makedirs(target_folder) try: # 讀取Excel文件(假設(shè)只有一個Excel文件) excel_file = os.listdir(rules_folder)[0] df = pd.read_excel(os.path.join(rules_folder, excel_file)) # 遍歷Excel的每一行 for index, row in df.iterrows(): old_name = row['源文件名'] new_name = row['新文件名'] # 構(gòu)建源文件的完整路徑 old_file_path = os.path.join(source_folder, old_name) if os.path.isfile(old_file_path): # 構(gòu)建新的文件路徑 new_file_path = os.path.join(target_folder, new_name) # 移動并重命名文件 # shutil.move(old_file_path, new_file_path) # 復(fù)制并重命名文件 shutil.copy(old_file_path, new_file_path) print(f"文件 '{old_name}' 已重命名為 '{new_name}' 并移動至文件夾【{target_folder}】。") else: print(f"文件 '{old_name}' 未找到,保留在文件夾【{source_folder}】。") print("文件重命名和移動操作完成!") except Exception as e: print(f"出現(xiàn)錯誤: {e}") def main(): source_folder = select_folder('待命名數(shù)據(jù)源') rules_folder = select_folder('命名規(guī)則') target_folder = '修改后' rename_and_move_files(source_folder, rules_folder, target_folder) if __name__ == '__main__': main()
到此這篇關(guān)于Python按照映射關(guān)系批量重命名文件的文章就介紹到這了,更多相關(guān)Python重命名文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python+OpenCV+pyQt5錄制雙目攝像頭視頻的實例
今天小編就為大家分享一篇Python+OpenCV+pyQt5錄制雙目攝像頭視頻的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06python?pandas庫讀取excel/csv中指定行或列數(shù)據(jù)
通過閱讀表格,可以發(fā)現(xiàn)Pandas中提供了非常豐富的數(shù)據(jù)讀寫方法,下面這篇文章主要給大家介紹了關(guān)于python利用pandas庫讀取excel/csv中指定行或列數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-02-02Python腳本,標(biāo)識符,變量使用,腳本語句,注釋,模塊引用詳解
這篇文章主要為大家詳細介紹了Python腳本,標(biāo)識符,變量使用,腳本語句,注釋,模塊引用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02關(guān)于python與opc ua Expert endpoint連接的問題
這篇文章主要介紹了關(guān)于python與opc ua Expert endpoint連接的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02