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

如何让Python匹配带参数的.html?后缀文件?新手求助

解决HTML文件匹配(含带参数的URL式文件名)问题

嘿,作为编程新手能写到这一步已经超棒啦!咱们一步步来搞定这个带参数的HTML文件匹配问题~

问题根源

你原来用endswith(".html")或endswith(".htm")的方式,只能匹配纯后缀结尾的文件,但像detail.html?id=123这种带参数的文件名,因为结尾是?id=123,所以自然匹配不到。咱们换个思路:先把问号后面的参数部分去掉,再判断核心文件名的后缀。

优化后的代码方案

首先,推荐用os.walk来遍历文件夹及其子文件夹——它比os.scandir更省心,会自动递归所有子目录,适合新手快速实现需求。下面是修改后的核心逻辑:

import os

def find_target_html_files(root_directory):
    # 遍历根目录下所有文件夹和文件
    for root, dirs, files in os.walk(root_directory):
        for file_name in files:
            # 把文件名按问号分割,只保留问号前的核心文件名
            core_file_name = file_name.split('?')[0]
            # 检查核心文件名是否以.html或.htm结尾
            if core_file_name.endswith(('.html', '.htm')):
                # 拼接完整文件路径
                full_file_path = os.path.join(root, file_name)
                print(f"找到目标文件: {full_file_path}")
                # 这里就可以调用你的HTML解析、去标签、导出CSV/TXT的逻辑啦

代码说明

  1. os.walk遍历:它会返回三个值:当前目录路径root、当前目录下的子文件夹列表dirs、当前目录下的文件列表files,帮你自动搞定所有子文件夹的遍历。
  2. 分割文件名:file_name.split('?')[0]会把文件名从第一个问号处切开——不管有没有问号,这个操作都安全:没有问号的话,分割结果只有一个元素,取第一个就是原文件名;有问号的话,就去掉后面的参数部分。
  3. 简洁的后缀判断:用endswith(('.html', '.htm'))比写两个or更简洁,Python支持用元组一次性判断多个后缀。

如果你坚持用os.scandir

也可以把判断逻辑改成这样(但需要自己实现递归遍历子文件夹哦):

import os

def scan_directory(directory):
    with os.scandir(directory) as it:
        for entry in it:
            if entry.is_dir():
                # 递归遍历子文件夹
                scan_directory(entry.path)
            else:
                core_file_name = entry.name.split('?')[0]
                if core_file_name.endswith(('.html', '.htm')):
                    print(f"找到目标文件: {entry.path}")
                    # 后续处理逻辑

慢慢来,把这部分逻辑替换到你的代码里,再结合HTML解析、去标签的逻辑,就能处理所有目标文件啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:36:12