文件夹里面有很多个mp文件,没有顺序,很乱:
这些文件其实都是有顺序的,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()
运行程序,成功,文件自动按照顺序排列好了: