批量重命名文件夹中CSV文件:移除文件名最后下划线后的内容
解决CSV文件批量重命名问题
你的需求是移除文件名最后一个下划线后的随机数字部分,保留原始前缀和.csv后缀,下面是正确的实现代码:
import pathlib DATA_DIR = pathlib.Path('C:\\Users\\dvs\\documents\\data') for old_path in DATA_DIR.glob('*.csv'): # 获取不带后缀的文件名(如"data_AA_10_344362") filename_stem = old_path.stem # 从右侧仅拆分一次下划线,提取前缀部分 new_stem = filename_stem.rsplit('_', 1)[0] # 构造新文件路径,保留原目录和.csv后缀 new_path = old_path.with_name(f"{new_stem}.csv") # 执行重命名 old_path.rename(new_path)
原代码的问题说明:
- Path对象直接调用split错误:
old是pathlib.Path实例,不是字符串,不能直接使用split('_')方法,需要先通过old.stem获取文件名主体部分。 - 丢失文件后缀:原代码拼接后的
new没有保留.csv后缀,会导致文件被重命名为无后缀格式,不符合需求。 - 路径处理不规范:使用
os.rename处理Path对象虽然在部分环境下兼容,但pathlib.Path自身的rename方法更适配跨平台路径规则,更可靠。
代码优势:
- 使用
rsplit('_', 1)仅拆分最后一个下划线,即使文件名有更多下划线也能正确处理,适配性更强。 - 通过
with_name方法直接替换文件名部分,无需手动拼接路径字符串,避免路径格式错误。
内容的提问来源于stack exchange,提问作者diversis
相关产品推荐
相关产品推荐

