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

如何用Python提取文件名#后数字并移至开头实现文件重命名

解决视频文件重命名的数字提取问题

嘿,我明白你现在的困扰——split()函数确实不太适合精准提取这种「# + 数字」的子串,用正则表达式会是更靠谱的方案!下面我一步步给你讲清楚怎么实现:

核心思路:用正则捕获#后的数字

正则可以精准定位文件名中#后面的连续数字,不管前后有什么内容,都能把数字单独揪出来。我们用Python的re模块来实现这个功能。

完整代码示例

假设你的原文件名格式是类似这样:

Crash Course Computer Science #27 - 计算机网络基础-TEAtmCYYKZA.en.mp4

目标是改成:

27 - 计算机网络基础.mp4

下面是可以直接用的代码(记得替换成你的视频文件夹路径):

import os
import re

# 替换成你的视频所在文件夹路径
video_folder = "/Users/you/videos/crash_course"

# 正则模式:匹配#后面的一串数字,括号里的是要捕获的数字部分
num_pattern = r'#(\d+)'
# 如果后面的"-TEAtmCYYKZA.en"是可变的(比如每个文件的ID不同),可以用这个正则来匹配删除
suffix_pattern = r'-[A-Za-z0-9]+\.en'

for file_name in os.listdir(video_folder):
    file_path = os.path.join(video_folder, file_name)
    # 只处理文件,跳过文件夹
    if not os.path.isfile(file_path):
        continue
    
    # 提取#后面的数字
    match_result = re.search(num_pattern, file_name)
    if not match_result:
        print(f"跳过无编号的文件:{file_name}")
        continue
    
    lesson_num = match_result.group(1)
    
    # 第一步:删除开头的固定前缀
    temp_name = file_name.replace("Crash Course Computer Science #", "")
    # 第二步:删除末尾的固定/可变后缀
    temp_name = re.sub(suffix_pattern, "", temp_name)
    # 第三步:把数字移到文件名开头
    final_name = f"{lesson_num} {temp_name}".strip()  # strip去掉多余的空格
    
    # 执行重命名(测试阶段可以先注释掉这两行,看final_name是否符合预期)
    old_full_path = os.path.join(video_folder, file_name)
    new_full_path = os.path.join(video_folder, final_name)
    os.rename(old_full_path, new_full_path)
    print(f"已重命名:{file_name} → {final_name}")

关键部分解释

  1. 正则捕获数字:r'#(\d+)'的意思是:
    • #:匹配字符#
    • (\d+):捕获一个或多个数字(\d代表数字,+表示至少一个),括号是捕获组,方便我们取出数字内容
  2. 处理可变后缀:如果每个文件末尾的-TEAtmCYYKZA.en里的ID不一样,用re.sub(suffix_pattern, "", temp_name)可以批量删除所有类似格式的后缀,不用一个个写replace
  3. 为什么不用split?:split()是按固定分隔符拆分字符串,比如用#拆分后,你得到的第二部分开头是数字,但后面跟着空格、标题等内容,还要再拆分一次才能拿到纯数字,步骤繁琐且容易出错,正则一步到位更高效

小提示

测试的时候可以先把os.rename那两行注释掉,只打印final_name,确认所有文件名都符合你的预期后再执行重命名操作,避免误改文件~

内容的提问来源于stack exchange,提问作者Özenç B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:49:36