You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python批量重命名以指定前缀开头的文件?

解决以特定前缀重命名文件的问题

问题分析

  1. os.rename不支持通配符:你第一个代码里直接用Reference*.xlsx作为旧路径是错误的,os.rename只能处理单个具体的文件路径,无法解析通配符*。
  2. 第二个代码的两处错误:
    • 路径拼接错误:ruta_carpeta + 'Reference/*.xlsx'会生成C:/Users/myname/DownloadsReference/*.xlsx,缺少目录与文件名之间的斜杠,导致glob无法匹配到目标文件;
    • 同名覆盖问题:循环中所有文件都被重命名为Lote.xlsx,同一目录下无法存在多个同名文件,后续文件会直接覆盖前面的,最终只会保留最后一个文件。

正确实现代码

如果需要给每个匹配到的文件重命名为唯一名称(避免覆盖),可以添加序号区分:

import glob
import os

ruta_carpeta = 'C:/Users/myname/Downloads'
# 使用os.path.join拼接路径,避免分隔符错误,匹配以Reference开头的xlsx文件
lista_archivos = sorted(glob.glob(os.path.join(ruta_carpeta, 'Reference*.xlsx')))

# 遍历文件,从1开始给新文件名加序号
for indice, archivo_viejo in enumerate(lista_archivos, start=1):
    # 构造新文件名:Lote_1.xlsx、Lote_2.xlsx...
    archivo_nuevo = os.path.join(ruta_carpeta, f"Lote_{indice}.xlsx")
    os.rename(archivo_viejo, archivo_nuevo)

如果你确认只需要保留最后一个匹配到的文件(其他会被覆盖),可以修改循环逻辑:

import glob
import os

ruta_carpeta = 'C:/Users/myname/Downloads'
lista_archivos = sorted(glob.glob(os.path.join(ruta_carpeta, 'Reference*.xlsx')))

if lista_archivos:
    # 取最后一个匹配的文件重命名
    archivo_viejo = lista_archivos[-1]
    archivo_nuevo = os.path.join(ruta_carpeta, "Lote.xlsx")
    os.rename(archivo_viejo, archivo_nuevo)

关键注意点

  • 始终使用os.path.join拼接路径,避免手动拼接斜杠导致的跨平台兼容问题或路径错误;
  • 多文件重命名时必须保证新文件名唯一,否则会触发文件覆盖;
  • 执行重命名前可以先打印lista_archivos确认匹配到的文件是否正确,避免误操作。

内容的提问来源于stack exchange,提问作者user4050774

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:05:14