python实战-读取xlsx表格批量替换文件名

2024-02-29 1465阅读

温馨提示:这篇文章已超过385天没有更新,请注意相关的内容是否还可用!

文章目录

        • 一、前言
        • 二、解决思路
        • 三、具体代码实现
        • 四、总结
          一、前言

          ​  一位在校当老师的同学遇到了一个需求,学生1寸照片是以学生姓名命名,现在需要重命名1寸照片,重命名为exel里对应的学生姓名的身份证号码,我心想这个需求很容易实现,照片有上百近千张如果手动修改那是很痛苦很低效的,用python就能很轻松的解决这个问题。格式图片如下:

          python实战-读取xlsx表格批量替换文件名

          python实战-读取xlsx表格批量替换文件名

          python实战-读取xlsx表格批量替换文件名

          二、解决思路

          ​  学生图片都是以名字命名,所以要读取表格里的姓名列、证件号码列,然后读取目录下图片的名称与表格姓名列进行对比,对比成功就修改对应的证件号码。

          三、具体代码实现

          先安装一下pandas库,用于读取表格数据。

          pip isntall pandas
          

          直接上代码:

          import pandas as pd
          import os
          import re
          import argparse
          # 获取目录下的excel文件
          def getExcel(dataPath, excelPath):
              for maindir, subdir, file_name_list in os.walk(excelPath):
                  for filename in file_name_list:
                      data = {}
                      apath = os.path.join(maindir, filename)
                      file_path = apath.replace("\\", "/")
                      df = pd.read_excel(file_path)
                      df = pd.DataFrame(df, columns=['姓名', '证件号码'])
                      for i in df.values:
                          data[i[0]] = i[1]
                      print(data)
                      modifyName(data, dataPath)
          # 修改文件名
          def modifyName(data, dataPath):
              try:
                  for maindir, subdir, file_name_list in os.walk(dataPath):
                      for filename in file_name_list:
                          try:
                              apath = os.path.join(maindir, filename)
                              file_path = apath.replace("\\", "/")
                              student_name = filename.strip(".jpg")
                              p = re.compile(r"(.*)/")
                              filepath = p.match(file_path).group(1)
                              new_file_name = filepath + "/" + \
                                  data[student_name] + ".jpg"
                              print("[+] 修改成功", file_path, new_file_name)
                              os.rename(file_path, new_file_name)
                          except Exception as e:
                              print("error:", e)
                              print("[-] 请检查:", student_name,
                                    "是否存在对应身份证号码。", "文件路径:", file_path)
                              continue
              except Exception as e:
                  print("error:", e)
          if __name__ == "__main__":
              example_text = """
                  python modifyFileName.py -d d:\data -e d:\excel
              """
              try:
                  parser = argparse.ArgumentParser(
                      description=example_text, formatter_class=argparse.RawTextHelpFormatter
                  )
                  parser.add_argument("-d", "--data", required=True)
                  parser.add_argument("-e", "--excel", required=True)
                  args = parser.parse_args()
                  data = args.data
                  excel = args.excel
                  getExcel(data, excel)
              except:
                  pass
          

          ​  直接给代码的话他还需要安装python与相应的库,为了解决让他开箱即用的问题,用我们之前学的pyinstaller来打包成exe,这样就可以直接运行了。

          pyinstaller -F modifyFileName.py
          

          python实战-读取xlsx表格批量替换文件名python实战-读取xlsx表格批量替换文件名

          python实战-读取xlsx表格批量替换文件名

          pyinstaller教学链接:

          https://blog.csdn.net/syl321314362/article/details/127619571
          

          最后运行结果:

          python实战-读取xlsx表格批量替换文件名

          python实战-读取xlsx表格批量替换文件名

          四、总结

          关注我,微信搜索艺说IT公众号,学习更多技术干货,对你有帮助请点个赞,感谢各位帅哥美女。`

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]