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

如何在HTML中仅循环指定类型文件(如video/mp4)?

如何在Flask中仅循环加载MP4视频文件

没问题,你只需要在后端对遍历到的文件做个筛选,只保留.mp4后缀的文件就行,另外还要注意子文件夹里的文件路径问题(你的当前代码会丢失子目录结构,导致子文件夹里的视频加载失败),我帮你把代码调整一下:

修改后的后端代码

from flask import Flask, render_template
import os

app = Flask(__name__, static_folder='static')
path = 'static'

@app.route('/')
def index():
    video_files = []
    # r=root(当前遍历的目录), d=directories(当前目录下的子文件夹), f = files(当前目录下的文件)
    for r, d, f in os.walk(path):
        for file in f:
            # 只筛选.mp4后缀的文件,兼容大写后缀的情况
            if file.lower().endswith('.mp4'):
                # 生成相对于static文件夹的相对路径,确保子文件夹内的文件能正确加载
                relative_path = os.path.relpath(os.path.join(r, file), path)
                video_files.append(relative_path)
    return render_template('index.html', video_files=video_files)

if __name__ == '__main__':
    app.run(host='localhost', debug=True, threaded=True)

关键修改点说明

  • 文件类型筛选:通过file.lower().endswith('.mp4')判断文件后缀,用lower()是为了兼容.MP4这种大写后缀的情况,避免漏选目标文件。
  • 路径问题修正:原来的代码只把文件名file加入列表,会丢失子目录结构(比如static/videos/xxx.mp4会被存成xxx.mp4),导致前端找不到文件。现在用os.path.join(r, file)获取文件的完整路径,再通过os.path.relpath生成相对于static文件夹的相对路径,这样url_for就能正确生成静态文件的访问URL了。

前端代码保持不变(可选优化)

你的前端代码可以继续使用,要是想更严谨,可以加上浏览器不支持播放的提示,但因为后端已经做了筛选,这一步不是必须的:

{% for file in video_files %}
<video controls width="250" height="250">
  <source src="{{ url_for('static', filename=file) }}" type="video/mp4">
  你的浏览器不支持视频播放
</video>
{% endfor %}

这样修改后,页面就只会加载所有子目录下的MP4视频文件,不会再加载其他类型的文件啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:47:34