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

Flask上传CSV文件后无法展示数据形状,寻求技术解决方案

排查与修复步骤

1. 完善后端逻辑,增加错误校验

修改app.py,补充文件存在性、格式校验和异常捕获,确保文件能正确读取并传递形状数据:

from flask import Flask, request, render_template
import pandas as pd

app = Flask(__name__)

@app.route('/upload', methods=['GET', 'POST'])
def upload():
    if request.method == 'POST':
        file = request.files.get('file')
        # 校验是否选择了文件
        if not file or file.filename == '':
            return render_template('upload.html', error="请先选择一个CSV文件")
        # 校验文件格式
        if not file.filename.lower().endswith('.csv'):
            return render_template('upload.html', error="仅支持上传CSV格式文件")
        
        try:
            df = pd.read_csv(file)
            # 重置文件指针,避免后续读取异常
            file.seek(0)
            # 格式化形状为易读的字符串
            shape_info = f"{df.shape[0]} 行, {df.shape[1]} 列"
            return render_template('upload.html', shape=shape_info)
        except Exception as e:
            return render_template('upload.html', error=f"文件读取失败: {str(e)}")
    return render_template('upload.html')

if __name__ == '__main__':
    app.run(debug=True)

2. 优化前端模板,增强状态提示

修改upload.html,补充错误提示和初始状态说明,避免变量未定义导致的显示异常:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSV数据形状查看</title>
</head>
<body>
<form method=post enctype=multipart/form-data>
    <input type=file name=file accept=".csv">
    <input type=submit value=Upload>
</form>

{% if error %}
    <p style="color: #dc3545;">{{ error }}</p>
{% endif %}

{% if shape %}
    <p>数据形状: {{ shape }}</p>
{% else %}
    <p>请上传CSV文件查看数据行数与列数</p>
{% endif %}
</body>
</html>

3. 验证环境依赖

确保本地已安装所需依赖包:

pip install flask pandas

问题根源说明

  • 原代码未处理未选文件就提交的场景,此时request.files.get('file')返回空,会导致pd.read_csv直接报错,无法正常返回形状数据。
  • 模板中直接输出{{ shape }},在首次GET请求时该变量不存在,页面仅显示Shape is:,容易造成功能失效的误解。
  • 增加file.seek(0)是因为FileStorage对象被读取后指针会移至文件末尾,重置指针可避免后续操作的潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:15:39