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

Python中如何判断Streamlit上传的文件是CSV格式还是Excel格式?

解决方案

你原有代码存在两处核心问题:

  1. 逻辑分支完全错误:else分支对应uploaded_file is None的场景,此时向pd.read_excel传入空值必然触发报错
  2. 没有做格式判断:只要文件上传成功,无论格式都会优先调用pd.read_csv()读取,上传Excel文件时自然会解析失败

扩展名获取与判断方法

Streamlit的UploadedFile对象自带name属性,可直接读取文件名后提取扩展名:

  • 用os.path.splitext()方法直接提取后缀,兼容性更好,避免手动分割字符串的异常
  • 常规支持的表格文件后缀可覆盖:.csv/.xlsx/.xls三类

修正后完整代码

import streamlit as st
import pandas as pd
import os

uploaded_file = st.file_uploader("Choose a file")
if uploaded_file is not None:
    # 获取文件扩展名,转小写避免大小写导致的判断失败
    file_ext = os.path.splitext(uploaded_file.name)[1].lower()
    # 根据扩展名选择读取方法
    if file_ext == '.csv':
        data = pd.read_csv(uploaded_file)
    elif file_ext in ['.xlsx', '.xls']:
        data = pd.read_excel(uploaded_file)
    else:
        st.error("不支持的文件格式,请上传csv或Excel文件")
        st.stop()
    # 输出数据预览
    st.write(data.head())

额外说明

  • 代码中对扩展名做了小写转换,可避免用户上传.CSV/.XLSX这类大写后缀的文件时判断失效
  • 增加了不支持格式的错误提示,优化用户体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:39:03