如何用Python批量修改目录下文件的日期命名格式为%y%m%d?
批量重命名日期格式文件的解决方案
原文件名格式是Recon-2024Jun03.xlsx,要改成Recon-240603.xlsx,直接用replace函数无法处理动态变化的日期,得通过日期解析来实现:
完整代码实现
import os from datetime import datetime # 替换成你的目标目录路径 path = "/your/target/directory" for filename in os.listdir(path): # 只处理符合命名规则的xlsx文件 if filename.startswith("Recon-") and filename.endswith(".xlsx"): # 提取日期部分:从"Recon-2024Jun03.xlsx"中分离出"2024Jun03" date_str = filename.split("-")[1].replace(".xlsx", "") try: # 解析原日期格式:4位年份+英文月份缩写+两位日期 date_obj = datetime.strptime(date_str, "%Y%b%d") # 格式化为目标格式:两位年份+两位月份+两位日期 new_date_str = date_obj.strftime("%y%m%d") # 拼接新文件名 new_filename = f"Recon-{new_date_str}.xlsx" # 执行重命名(必须拼接完整路径,否则会找不到文件) os.rename(os.path.join(path, filename), os.path.join(path, new_filename)) print(f"已重命名:{filename} -> {new_filename}") except ValueError: # 跳过不符合日期格式的文件 print(f"跳过无效文件:{filename}")
关键说明
datetime.strptime(date_str, "%Y%b%d"):专门解析原日期字符串,%Y对应4位年份,%b对应英文月份缩写(如Jun),%d对应两位日期date_obj.strftime("%y%m%d"):生成目标格式,%y取年份后两位,%m生成两位数字月份(如06),%d保留两位日期- 必须用
os.path.join拼接完整路径,否则os.rename会在当前工作目录操作,容易导致文件找不到的错误 - 异常处理能跳过不符合格式的文件,避免程序中途崩溃
内容的提问来源于stack exchange,提问作者iBeMeltin
相关产品推荐
相关产品推荐

