Python按照映射關(guān)系批量重命名文件
1、背景介紹
有時(shí)候我們?nèi)粘^k公的時(shí)候,經(jīng)常需要將批量文件,進(jìn)行重命名,但是重命名是按照一定的規(guī)則,比如提供一個(gè)映射關(guān)系的表,如下圖:
那么我們可以Python中的shutil模塊對文件進(jìn)行批量的操作,以此達(dá)到我們想要的效果
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)錯(cuò)誤: {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è)只有一個(gè)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)錯(cuò)誤: {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下載文件記錄黑名單的實(shí)現(xiàn)代碼
這篇文章主要介紹了python下載文件記錄黑名單的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-10-10Python+OpenCV+pyQt5錄制雙目攝像頭視頻的實(shí)例
今天小編就為大家分享一篇Python+OpenCV+pyQt5錄制雙目攝像頭視頻的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧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)識符,變量使用,腳本語句,注釋,模塊引用詳解
這篇文章主要為大家詳細(xì)介紹了Python腳本,標(biāo)識符,變量使用,腳本語句,注釋,模塊引用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02使用Python神器對付12306變態(tài)驗(yàn)證碼
這篇文章主要介紹了使用Python神器對付12306變態(tài)驗(yàn)證碼的相關(guān)資料,需要的朋友可以參考下2016-01-01關(guān)于python與opc ua Expert endpoint連接的問題
這篇文章主要介紹了關(guān)于python與opc ua Expert endpoint連接的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02python 生成器協(xié)程運(yùn)算實(shí)例
下面小編就為大家?guī)硪黄猵ython 生成器協(xié)程運(yùn)算實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09Python中return函數(shù)返回值實(shí)例用法
在本篇文章里小編給大家整理的是一篇關(guān)于Python中return函數(shù)返回值實(shí)例用法,有興趣的朋友們可以學(xué)習(xí)下。2020-11-11