使用Python3批量重命名图片时遇Unicode转义错误求助
解决Python批量重命名图片的Unicode转义错误及功能实现
错误原因分析
- Unicode转义错误:Windows路径中的反斜杠
\被Python解析为转义字符,比如\U会触发Unicode转义解析,但路径中的\U并非合法的Unicode转义序列,直接导致语法报错。 - 函数调用错误:定义的处理函数是
rename_files,但调用时误写为rename,且错误使用*运算符,导致参数传递逻辑异常。 - 潜在代码缺陷:
- 用
file.split(".")[-1]提取后缀,若文件名含多个点(如image.v2.png)会得到错误后缀; - 手动拼接路径易出现分隔符错误,且未过滤子文件夹,可能误重命名目录;
- 计数器未补零,文件名排序会出现混乱(如
10排在2前面)。
- 用
修正后的完整代码
import os def rename_files(directory, base_name): # 遍历目录,仅处理文件(跳过子文件夹) for counter, filename in enumerate(os.listdir(directory)): file_full_path = os.path.join(directory, filename) # 跳过子目录 if os.path.isdir(file_full_path): continue # 安全提取文件后缀(支持含多个点的文件名) file_ext = os.path.splitext(filename)[1] # 生成带补零计数器的新文件名(适配1000+文件的排序需求) new_filename = f"{base_name}_{counter:04d}{file_ext}" new_full_path = os.path.join(directory, new_filename) # 执行重命名操作 os.rename(file_full_path, new_full_path) print(f"已重命名:{filename} -> {new_filename}") # 调用函数:用原始字符串(r前缀)处理Windows路径,避免转义问题 rename_files( r"C:\Users\Popin\Pictures\unprocessed art\9-24-22-batch\AI_PICS_Realistic", "Batch_9_24_22" )
关键修正点说明
- 路径转义处理:在路径字符串前加
r标记为原始字符串,Python会忽略所有转义字符,直接按字面量解析路径;也可改用双反斜杠\\或正斜杠/替代单反斜杠。 - 函数调用修正:正确调用定义好的
rename_files函数,直接传递两个参数,移除错误的*运算符。 - 文件过滤:通过
os.path.isdir跳过子文件夹,避免误操作目录。 - 安全后缀提取:使用
os.path.splitext替代split("."),能准确处理含多个点的文件名。 - 计数器格式化:用
counter:04d将计数器格式化为4位带前导零的数字,确保文件名排序逻辑正确、格式统一。 - 路径拼接:使用
os.path.join自动适配不同操作系统的路径分隔符,避免手动拼接的错误。
额外优化建议
- 重命名前建议先备份目标文件夹内的文件,避免意外错误导致数据丢失;
- 若需按文件修改/创建时间排序重命名,可先对文件列表排序后再处理:
# 按文件修改时间排序 sorted_files = sorted( os.listdir(directory), key=lambda x: os.path.getmtime(os.path.join(directory, x)) ) for counter, filename in enumerate(sorted_files): # 后续重命名逻辑同上
内容的提问来源于stack exchange,提问作者Jeremy
相关产品推荐
相关产品推荐

