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

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

使用python高效批量重命名文件:身份證號到姓名

日常辦公中,我們經常需要處理大量文件,尤其涉及文件重命名時,效率至關重要。本文介紹如何利用Python將以身份證號命名的文件批量重命名為以姓名命名的文件,并優化代碼以提高效率和可靠性。

假設您有一批以身份證號命名的文件,以及一個包含身份證號和姓名映射的excel表格(例如data.xls)。初始代碼嘗試直接從Excel中查找對應姓名,但效率和魯棒性有待提高:

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     if len(name) > 0:         new_name = name[0] + ext         os.rename(id_file, new_name) print("重命名完成")

此代碼存在效率問題,因為它對每個文件都進行一次完整的Excel數據查找。以下為優化后的代碼,顯著提升效率:

import os import pandas as pd  df = pd.read_excel("data.xls", dtype={"身份證號": str}) # 保證身份證號列為字符串類型 name_map = {str(row[0]): row[1] for row in df.values} # 創建身份證號到姓名的映射字典 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 name_map:         new_name = name_map[id_num] + ext         print(f"重命名: {id_file} -> {new_name}")         os.rename(id_file, new_name) print("重命名完成")

優化后的代碼首先將Excel數據轉換為字典,建立身份證號與姓名的鍵值對映射。這樣,查找對應姓名的時間復雜度從O(n)降為O(1),極大提高了效率。此外,代碼增加了數據類型轉換,確保身份證號匹配的準確性。 每次重命名操作都會打印日志,方便追蹤和調試。 這個改進后的版本更健壯,處理速度更快,更適合處理大量文件。

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

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