将文件的文件大小存储在变量 Streamlit 中

Posted

技术标签:

【中文标题】将文件的文件大小存储在变量 Streamlit 中【英文标题】:storing file size of a file in variable Streamlit 【发布时间】:2022-01-09 06:36:18 【问题描述】:

我正在尝试在 streamlit 中创建文件大小限制。为此,我需要将 a 的上传文件大小放入一个变量中。

在一个简单的 python 脚本中,我可以使用以下函数来获取文件大小。

os.path.getsize("filename.mp3")

但我无法在 streamlit 应用程序中执行此操作。

【问题讨论】:

【参考方案1】:

在 streamlit 中,您可以使用文件上传器小部件 st.file_uploader 来上传文件:

uploaded_file = st.file_uploader("Choose a file")

要获取上传文件的大小,我们需要两个步骤:

    使用 getvalue() 获取上传的文件字节数:

     bytes_data = uploaded_file.getvalue()
    

    使用python内置的len()函数获取字节大小:

     file_size = len(bytes_data)
    

大家一起:

import streamlit as st

# upload file
uploaded_file = st.file_uploader("Choose a file")
if uploaded_file is not None:
    # To read file as bytes:
    bytes_data = uploaded_file.getvalue()
    # get file size
    file_size  = len(bytes_data)

还有一个关于文件大小的说明,默认情况下,在 Streamlit 中,上传的文件限制为 200MB。您可以使用 server.maxUploadSize 配置选项进行配置。有关更多信息,您可以在那里阅读documentation

【讨论】:

以上是关于将文件的文件大小存储在变量 Streamlit 中的主要内容,如果未能解决你的问题,请参考以下文章

如何在streamlit中从用户读取csv文件并转换为pandas数据框

Streamlit:Session_state() 和 Multiapp() - 导航

在同一个 CSV 文件中保存多个不同大小的列/变量

获取streamlit中上传文件的原名

如何将 <class 'streamlit.uploaded_file_manager.UploadedFile'> 类型的文件转换为 Ptr<cv::UMat>?

如何在 Streamlit 中将 Pandas DataFrame 下载到 CSV 文件