用ChatGPT進(jìn)行批量重命名時(shí),一部分成功了,但有一部分文件標題沒(méi)有變化。

問(wèn)下ChatGPT怎么回事:

回復:在Windows中,文件名不能包含以下字符:\ / : * ? " < > |,使用Python的 str.replace 方法來(lái)替換Excel文件的第1列中不能用于文件名的字符
于是,把這個(gè)注意事項加入到提示詞中:
你是一個(gè)Python編程專(zhuān)家,要完成批量重命名的任務(wù),具體步驟如下:
讀取F盤(pán)的表格文件:pname.xlsx,獲取到第2列的數據;
逐一讀取文件夾“D:\lexfridman-podcast”里面的所有mp3文件的名稱(chēng),然后和表格pname.xlsx第2列所有內容進(jìn)行比對,如果和某個(gè)單元格內容一致,則讀取這個(gè)單元格同一行的第1列單元格的內容,以此對文件標題進(jìn)行重命名;
注意:每一步都要輸出相關(guān)信息;
在Windows中,文件名不能包含以下字符:\ / : * ? " < > |,使用Python的 str.replace 方法來(lái)替換Excel文件的第1列中不能用于文件名的字符
這次給出的源代碼運行成功:
import os
import pandas as pd
# 讀取Excel文件
df = pd.read_excel('F:\\pname.xlsx', usecols=[0, 1], header=None)
# 獲取文件夾中的所有文件
folder_path = 'D:\\lexfridman-podcast'
files = os.listdir(folder_path)
# 定義一個(gè)函數,它會(huì )將所有不能用于文件名的字符替換為下劃線(xiàn) "_"
def sanitize_filename(filename):
invalid_chars = '\\/:*?"<>|'
for char in invalid_chars:
filename = filename.replace(char, '_')
return filename
# 遍歷文件夾中的每一個(gè)文件
for file in files:
# 檢查文件是否是mp3文件
if file.endswith('.mp3'):
# 去掉".mp3"后綴,方便比較
file_without_extension = file[:-4]
# 查找這個(gè)文件名在Excel表格的第二列(Python中索引從0開(kāi)始)中的位置
matching_rows = df[df[1] == file_without_extension]
# 如果找到了匹配的行
if not matching_rows.empty:
# 獲取新的名字,并清理無(wú)效的字符
new_name = sanitize_filename(matching_rows.iloc[0, 0]) + ".mp3"
# 輸出信息
print(f"Renaming {file} to {new_name}")
# 重命名文件
os.rename(os.path.join(folder_path, file), os.path.join(folder_path, new_name))
# 完成后輸出信息
print("All files have been renamed.")

聯(lián)系客服