如何使用Python將身份證號命名的文件改為姓名命名?

如何使用Python將身份證號命名的文件改為姓名命名?

利用python腳本實現身份證號文件批量重命名為姓名

在實際應用中,我們經常需要處理以身份證號命名的文件,并將其重命名為對應的姓名。本文提供一種高效的Python解決方案,結合excel表格數據,實現批量文件重命名。

假設您有一個包含身份證號和姓名對應關系的Excel文件(例如“data.xls”),以及一個包含以身份證號命名的文件的文件夾。以下代碼將幫助您完成文件重命名:

原始代碼及存在的問題:

以下代碼嘗試根據excel表格中的映射關系,將文件從身份證號命名改為姓名命名,但存在效率和健壯性問題:

立即學習Python免費學習筆記(深入)”;

import os import pandas as pd  df = pd.read_excel("data.xls") id_list = os.listdir("./") for id_file in id_list:     id_num = id_file[:id_file.find(".")]     ext = id_file[id_file.find("."):]     name = df[df["身份證號"] == id_num].姓名.values     print(name)     if len(name) != 0:         name = name[0]         print(f"開始重命名: {id_file} -> {name}{ext}")         os.rename(id_file, name + ext) print("重命名結束")

該代碼的主要問題在于,它對Excel文件進行多次查找,效率低下。當文件數量較多時,性能會急劇下降。

改進后的Python代碼:

為了提高效率和健壯性,我們采用更直接的遍歷方式:

import os import pandas as pd  df = pd.read_excel("data.xls") id_name_map = dict(zip(df["身份證號"], df["姓名"]))  # 創建身份證號到姓名的映射字典 id_list = os.listdir("./")  for id_file in id_list:     id_num = id_file[:id_file.find(".")]     ext = id_file[id_file.find("."):]     if id_num in id_name_map:         new_name = id_name_map[id_num] + ext         print(f"開始重命名: {id_file} -> {new_name}")         os.rename(id_file, new_name) print("重命名結束") 

此代碼首先創建了一個身份證號到姓名的映射字典,然后遍歷文件列表,通過字典查找對應的姓名,從而避免了重復查找Excel表格數據,顯著提高了效率。 此外,它也更清晰地展示了代碼的邏輯。

通過以上改進,您可以更有效地實現批量文件重命名,提高工作效率。 請確保“data.xls”文件存在于與python腳本相同的目錄下,并且“身份證號”和“姓名”列名與Excel文件中的列名一致。

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享