文件夹里面有很多个mp4文件,没有顺序,很乱: ![]() 这些文件其实都是有顺序的,Excel表格中前面的数字就是序号: ![]() 现在,希望根据Excel表格中的标题名来对文件夹里的mp4文件进行批量重命名,在ChatGPT中输入提示词: 你是一个Python编程专家,要完成批量重命名的任务,具体步骤如下: 读取文件夹“D:\象棋\how to play chess”里面的表格文件:chess.xlsx,获取到第2列的数据; 逐一读取文件夹“D:\象棋\how to play chess”里面的所有mp4文件的名称,然后和表格chess.xlsx第2列所有内容进行比对,如果和某个单元格内容一致,则将这个mp4文件名的开头加上这个单元格同一行的第1列单元格的内容,对文件标题进行重命名; 注意:每一步都要输出相关信息 将整数(int)和字符串(str)使用 '+' 运算符合并时,不能直接将这两种类型的数据进行加法运算,需要先将整数类型转换成字符串类型; 文件名和 Excel 内容的匹配不要区分大小写; 文件名匹配时,只比较英文字符,忽略掉“?、|、-、_、! _ 、!、_ _、: ”等这些符号; ChatGPT给出的源代码如下: import os import openpyxl import re # 读取Excel表格的数据 def read_excel(file_path): workbook = openpyxl.load_workbook(file_path) sheet = workbook.active data = {} for row in sheet.iter_rows(min_row=2, values_only=True): # 从第2行开始读取数据 key = re.sub(r'[\W_]+', '', str(row[1]).lower()) # 将第2列的数据作为键,转换为小写,只保留英文字符 data[key] = str(row[0]) # 将第1列的数据作为值,转换为字符串 return data # 重命名文件 def rename_files(folder_path, data): for file_name in os.listdir(folder_path): if file_name.endswith('.mp4'): name_without_extension = re.sub(r'[\W_]+', '', os.path.splitext(file_name)[0].lower()) if name_without_extension in data: new_name = data[name_without_extension] + ' - ' + file_name os.rename(os.path.join(folder_path, file_name), os.path.join(folder_path, new_name)) print(f"重命名:'{file_name}' 为 '{new_name}'") else: print(f"未找到匹配项:'{file_name}'") def main(): folder_path = "D:/象棋/how to play chess" excel_file = os.path.join(folder_path, 'chess.xlsx') data = read_excel(excel_file) rename_files(folder_path, data) if __name__ == '__main__': main() 运行程序,成功,文件自动按照顺序排列好了: ![]() |
|