文件夹里面有一些文件标题名称前面是空格,要批量删除。 可以在ChatGPT中输入提示词如下: 你是一个Python编程专家,要完成一个批量重命名文件标题的任务,具体步骤如下: 打开本地电脑文件夹:E:\National Geographic Kids 读取文件夹里面的所有mp4文件; 如果文本标题中开头第一个字符中是空格,则将文件标题中的这个空格删除掉; 注意:每一步都要输出信息 如果删除空格后的文件标题和文件夹中其他标题名重复,则在文件标题后加上一个“new”,以便进行区别; 程序运行后,大部分成功,一部分没成功,错误信息如下: 处理文件: Cats vs. Dogs Read Aloud.mp4 发现开头空格: Cats vs. Dogs Read Aloud.mp4 重命名为:Cats vs. Dogs Read Aloud.mp4 Traceback (most recent call last): File "d:\Python\deletesapceinfilename.py", line 25, in <module> os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename)) FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'E:\\National Geographic Kids\\ Cats vs. Dogs Read Aloud.mp4' -> 'E:\\National Geographic Kids\\Cats vs. Dogs Read Aloud.mp4' ChatGPT的回复是: 你的系统把 "Cats vs. Dogs Read Aloud.mp4" 和 " Cats vs. Dogs Read Aloud.mp4" 当成是同一个文件,即使我们在文件名中间加入了"_temp"。这可能是因为在 Windows 系统中,文件名的开头和结尾的空白字符会被自动忽略。 一个可能的解决方案是,我们可以先把文件移动到一个临时文件夹,然后再移动回原来的文件夹并重命名。以下是一种可能的实现: import os import shutil # 定义文件夹路径和临时文件夹路径 folder_path = 'E:\\National Geographic Kids' temp_folder_path = 'E:\\National Geographic Kids\\temp' # 如果临时文件夹不存在,创建临时文件夹 if not os.path.exists(temp_folder_path): os.makedirs(temp_folder_path) # 读取文件夹里的所有文件并存储文件名 filenames = [f for f in os.listdir(folder_path) if f.endswith('.mp4')] # 遍历文件名 for filename in filenames: print(f'处理文件:{filename}') # 检查文件名开头是否有空格 if filename.startswith(' '): print(f' 发现开头空格:{filename}') new_filename = filename.lstrip() # 删除开头空格 # 检查新文件名是否已存在 if new_filename in filenames: print(f' 文件名冲突,添加"new"') new_filename = new_filename.rsplit('.', 1)[0] + 'new.' + new_filename.rsplit('.', 1)[1] # 将文件移动到临时文件夹并重命名 shutil.move(os.path.join(folder_path, filename), os.path.join(temp_folder_path, new_filename)) # 将文件从临时文件夹移回原文件夹 shutil.move(os.path.join(temp_folder_path, new_filename), os.path.join(folder_path, new_filename)) print(f' 重命名为:{new_filename}') else: print(' 文件名未改变') # 删除临时文件夹 os.rmdir(temp_folder_path) print('所有文件处理完成') 运行修改后的Python代码,成功! |
|