如何在Streamlit中获取上传文件大小并存储到变量中
Streamlit读取上传文件大小及实现大小限制的方法
为什么os.path.getsize不生效
Streamlit的st.file_uploader组件返回的是UploadedFile类文件对象,仅存在于运行内存中,没有本地磁盘的真实存储路径,因此需要读取本地路径的os.path.getsize方法无法直接使用。
实现步骤
- 第一步:调用上传组件获取文件对象
import streamlit as st uploaded_file = st.file_uploader("请选择要上传的文件")
- 第二步:读取文件大小
直接调用UploadedFile自带的size属性即可获取文件大小,单位为字节:
if uploaded_file is not None: # 读取文件大小存入变量 file_size = uploaded_file.size st.write(f"上传文件大小为:{file_size} 字节")
如果需要适配通用类文件对象的读取逻辑,也可以通过读取字节内容计算长度(大文件场景不推荐,会占用额外内存):
file_size = len(uploaded_file.getvalue())
- 第三步:实现大小限制逻辑
比如限制上传文件最大为10MB,参考逻辑如下:
MAX_SIZE = 10 * 1024 * 1024 # 10MB对应的字节数 if uploaded_file is not None: file_size = uploaded_file.size if file_size > MAX_SIZE: st.error("上传文件超出10MB大小限制,请重新选择") else: st.success("文件大小符合要求,可继续处理") # 后续文件处理逻辑
内容的提问来源于stack exchange,提问作者Hira Iftikhar
相关产品推荐
相关产品推荐

