ayame的个人博客分享 http://blog.sciencenet.cn/u/ayame

博文

批量修改文件名的python代码

已有 1099 次阅读 2022-9-16 19:01 |系统分类:科研笔记

在作者“用余生去守护”的基础上做了些许修改,在excel文件中填写原名,并一一对应修改名,无需考虑后缀名。原作者代码见https://www.jb51.net/article/247374.htm

代码ExcelRename.py如下

-------------------------------------------------分割线start-----------------------------------------------

# -*- coding: utf-8 -*-
"""
Created on Tue Apr 19 20:32:11 2022

@author: Rena
"""
#通过excel批量对应文件名并修改
import os
import xlwings as wx

def listdir(path, list_name):  #传入存储的list
    for file in os.listdir(path):
        
        file_path = os.path.join(path,file)  #path+filename
        list_name.append(file_path)     #写入列表

def getinfo(ori_name,new_name,name_suffix,excel_file):          # 获取原始名称和修改名称
    app = wx.App(visible=False, add_book=False) # 获取excel
    wb = app.books.open(excel_file)    #打开excel
    sheet = wb.sheets[0]

    nrows    = sheet.used_range.last_cell.row       #获取最大行数

    # 提取原名和现名
    for row in range(2,nrows+1):   #range取不到最后一位
        file_name1 = str(sheet.range((row,1)).value)   #原名
        file_name2 = str(sheet.range((row,2)).value).split('.')[0]     #现名
        file_name3 = str(sheet.range((row,1)).value).split('.')[-1]   #原名后缀名        
        ori_name.append(file_name1)
        new_name.append(file_name2)
        name_suffix.append(file_name3)
        
    wb.close()
    app.quit()

def change_name(file_path,ori_name,new_name,name_suffix,list_name):
    # 逐个处理照片
    for filename in list_name:
        old_name = os.path.basename(filename)    #去掉文件名的后缀
        
        # 查找现名清单并替换原名
        for nfile in ori_name:
            if old_name in nfile:    #存在包含关系
                nfname = file_path+os.sep+new_name[ori_name.index(nfile)]+"."+name_suffix[ori_name.index(nfile)]
                os.rename(filename,nfname)
                break

file_path = r'C:\Users\Rena\Desktop\dd' # 更名文件夹位置(需更改)
excel_file= r'E:\data\python\text\ExcelRename.xlsx'   #excel文件位置(需更改)

try:
    List_files=[]     #读取文件夹下的所有文件
    listdir(file_path,List_files)    #excel_path+name

    ori_name=[]
    new_name=[]
    name_suffix=[]
    getinfo(ori_name,new_name,name_suffix,excel_file)   # 读取原名和现名
    change_name(file_path,ori_name,new_name,name_suffix,List_files)   # 修改文件名字
    
    print("done")
except Exception as  e:  # 打印异常信息
    print(e)

-------------------------------------------------分割线end-----------------------------------------------

需要修改的部分为

file_path = r'C:\Users\Rena\Desktop\dd' # 更名文件夹位置(需更改)
excel_file= r'E:\data\python\text\ExcelRename.xlsx'   #excel文件位置(需更改)

以及ExcelRename.xlsx文件,其中excel文件中原名列可用如下代码直接获取,现名那些根据自己需要修改即可

-------------------------------------------------分割线start-----------------------------------------------

# -*- coding: utf-8 -*-
"""
Created on Sun Apr 17 16:37:14 2022

@author: Rena
"""

import os
#需要修改后缀的文件目录
os.chdir(r'C:\Users\Rena\Desktop\dd')  #修改当前工作目录

# 列出当前目录下所有的文件
files = os.listdir('./')

for fileName in files:
    print(fileName)

-------------------------------------------------分割线end-----------------------------------------------

最后,祝各位生活愉快



https://blog.sciencenet.cn/blog-3503582-1355626.html


下一篇:双Y绘图的VBA代码
收藏 IP: 58.213.140.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2023-2-7 19:38

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部