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

Python批量处理Markdown文件时如何移除文件名前缀的5位数字和下划线

解决方案

方法1:固定长度切片(推荐,性能最优)

因为你的前缀是固定格式:5位数字+1个下划线,总长度为6,直接对文件名切片即可,搭配os.path系列函数处理路径,避免直接替换路径字符串引发的异常。
需要修改的核心逻辑:

# 拆分原始文件的路径和文件名
dir_path, original_filename = os.path.split(x)
# 切掉前6位的前缀,长度不足6的文件名保留原名避免报错
new_filename = original_filename[6:] if len(original_filename) >6 else original_filename
# 替换input目录为output目录
output_dir = dir_path.replace('input', 'output')
# 拼接得到完整的输出文件路径
y = os.path.join(output_dir, new_filename)

把原来代码里的y = x.replace('input', 'output')替换成上面这段逻辑即可。

方法2:正则匹配(兼容性更强)

如果担心存在不符合前缀规则的文件,不想误切正常文件名,可以用正则匹配前缀,只有命中5位数字+下划线开头的规则才切除:
首先导入re模块:

import re

然后处理文件名的逻辑替换为:

dir_path, original_filename = os.path.split(x)
# 匹配开头的5位数字+下划线,匹配到就替换为空
new_filename = re.sub(r'^\d{5}_', '', original_filename)
output_dir = dir_path.replace('input', 'output')
y = os.path.join(output_dir, new_filename)

修改后的完整代码(切片版)

import glob
import os
import markdown

def main():
    input_root = r"\\servername\prod_help_file\input"
    output_root = r"\\servername\prod_help_file\output"
    big_file_path = r"\\servername\prod_help_file\bigfile.md"
    
    file_list_md = glob.glob(os.path.join(input_root, "*.md"))
    file_list_html = glob.glob(os.path.join(input_root, "*.html"))
    config = {
        'extra': {
            'footnotes': {
                'UNIQUE_IDS': True
            }
        }
    }
    with open(big_file_path, 'w', encoding='utf-8') as output:
        for x in file_list_md:
            with open(x, 'r', encoding='utf-8') as body:
                text = body.read()
                html = markdown.markdown(text, extensions=['extra'], extension_configs=config)
                output.write(html)
                
                # 处理文件名前缀逻辑
                dir_path, original_filename = os.path.split(x)
                new_filename = original_filename[6:] if len(original_filename) >6 else original_filename
                # 生成输出路径
                new_file_path = os.path.join(output_root, new_filename)
                k = new_file_path.replace('.md', '.html')
                
                with open(k, 'w', encoding='utf-8') as output2:
                    with open(file_list_html[0], 'r', encoding='utf-8') as head:
                        head_text = head.read()
                        output2.write(head_text)
                        output2.write(html)
                    with open(file_list_html[1], 'r', encoding='utf-8') as foot:
                        foot_text = foot.read()
                        output2.write(foot_text)

if __name__ == "__main__":
    main()

补充说明:代码里新增了encoding='utf-8'参数,避免不同系统环境下读写中文或特殊字符出现乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:06:00