Python批量重命名PDF:按两种格式规则修正文件名大小写
批量修正PDF文件名大小写的Python脚本补全
针对你提出的物料和成品两种文件名格式,以下是补全后的完整脚本,包含规则处理、确认机制和错误处理:
import os folder = '/Dev/Test_Rename_PDF' # 切换到目标文件夹,避免路径问题 os.chdir(folder) for fileName in os.listdir('.'): try: # 筛选PDF文件(兼容大小写后缀) if not fileName.lower().endswith('.pdf'): continue print(f"Processing {fileName}") # 去掉PDF后缀,拆分编码部分和描述部分(按第一个空格分割) name_without_ext = fileName[:-4] if fileName.lower().endswith('.pdf') else fileName if ' ' not in name_without_ext: # 无空格的情况,按物料格式处理(可根据实际需求调整) new_name_part = name_without_ext[:-1] + name_without_ext[-1].upper() newName = f"{new_name_part}.pdf" else: code_part, desc_part = name_without_ext.split(' ', 1) # 判断是成品还是物料格式 if '-' in code_part: # 成品格式:编码全大写,描述每个单词首字母大写 processed_code = code_part.upper() else: # 物料格式:编码最后一个字母大写 processed_code = code_part[:-1] + code_part[-1].upper() # 处理描述部分:每个单词首字母大写 processed_desc = desc_part.title() # 拼接新文件名 newName = f"{processed_code} {processed_desc}.pdf" # 用户确认重命名 option = raw_input(f"Do you want to rename '{fileName}' to '{newName}'? [y][n]: ") option = option.lower() if option.startswith('y'): os.rename(fileName, newName) print(f"Renamed to {newName}") except Exception as e: print(f"Error in processing {fileName}: {str(e)}")
关键逻辑说明:
- 文件筛选:用
endswith('.pdf')更简洁地判断PDF文件,兼容大小写后缀 - 文件名拆分:通过
split(' ', 1)只分割第一个空格,确保描述部分的空格保留 - 格式判断:根据编码部分是否包含
-区分成品和物料- 成品:编码段全大写(如
test-2000a-tp-a→TEST-2000A-TP-A) - 物料:编码段最后一个字母大写(如
4000a→4000A)
- 成品:编码段全大写(如
- 描述处理:用
title()方法快速将每个单词首字母大写 - 路径修正:添加
os.chdir(folder)切换到目标文件夹,解决原代码中folder变量未使用的问题 - 错误优化:将
except:改为except Exception as e,能打印具体错误信息,方便排查
内容的提问来源于stack exchange,提问作者dr_jack3l
相关产品推荐
相关产品推荐

