如何基于TXT文件内容批量重命名目录下的PNG文件?
基于TXT内容批量重命名PNG文件
以下是整合了你提到的操作的完整可运行代码,同时加入了避免出错的细节处理:
import os import glob # 1. 读取TXT文件,生成新文件名列表(自动过滤空行、去除换行符) txt_path = "你的文件名列表.txt" # 替换为你的TXT文件路径 with open(txt_path, 'r', encoding='utf-8') as f: new_names = [line.strip() for line in f.readlines() if line.strip()] # 2. 获取目标文件夹下的所有PNG文件,并按文件名排序(保证顺序对应) png_folder = "你的图片文件夹路径" # 替换为你的PNG文件夹路径,当前目录可填"./" png_files = sorted(glob.glob(os.path.join(png_folder, "*.png"))) # 3. 检查文件数量是否匹配,不匹配则终止 if len(png_files) != len(new_names): print(f"错误:PNG文件数量({len(png_files)})与TXT行数({len(new_names)})不匹配") exit() # 4. 按索引对应关系批量重命名 for idx, old_file_path in enumerate(png_files): # 确保新文件名带.png后缀 new_file_name = f"{new_names[idx]}.png" new_file_path = os.path.join(png_folder, new_file_name) # 跳过已存在的文件,避免覆盖数据 if os.path.exists(new_file_path): print(f"跳过:{new_file_path} 已存在,未执行重命名") continue # 执行重命名 os.rename(old_file_path, new_file_path) print(f"完成:{os.path.basename(old_file_path)} -> {new_file_name}")
关键细节说明
- 文件排序:使用
sorted()对PNG文件列表排序,确保文件顺序和TXT行顺序严格对应(如果你的PNG原文件名是按数字序号命名的,这个排序会保证1.png对应第一行,2.png对应第二行) - 空行过滤:通过
if line.strip()过滤TXT中的空行,避免出现空文件名导致的错误 - 编码处理:读取TXT时指定
encoding='utf-8',解决中文文件名乱码问题 - 后缀保证:自动给新文件名添加
.png后缀,避免TXT中未写后缀导致文件格式异常 - 安全检查:重命名前检查目标文件是否存在,防止误删或覆盖已有文件
内容的提问来源于stack exchange,提问作者mak47
相关产品推荐
相关产品推荐

