欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?Streamlit實(shí)現(xiàn)文件的上傳和下載功能

 更新時(shí)間:2024年12月26日 08:33:51   作者:wang_yb  
在Web應(yīng)用中,文件的上傳下載是交互中不可缺少的功能,這篇文章主要為大家介紹了如何在Streamlit應(yīng)用中實(shí)現(xiàn)文件的上傳和下載功能,感興趣的可以了解下

Web應(yīng)用中,文件的上傳下載是交互中不可缺少的功能。

因?yàn)樵跇I(yè)務(wù)功能中,一般不會(huì)只有文字的交互,資料或圖片的獲取和分發(fā)是很常見(jiàn)的需求。

比如,文件上傳可讓用戶向服務(wù)器提交數(shù)據(jù),如上傳圖片分享生活、提交文檔用于工作協(xié)作等,豐富應(yīng)用功能。

文件下載則使用戶能獲取服務(wù)器端的資源,像下載軟件、報(bào)告等,提升用戶對(duì)應(yīng)用內(nèi)容的獲取能力,增強(qiáng)用戶體驗(yàn)和應(yīng)用實(shí)用性。

本篇介紹如何在Streamlit應(yīng)用中實(shí)現(xiàn)文件的上傳下載功能。

1. 上傳 st.file_uploader

Streamlit通過(guò)st.file_uploader可以很方便的實(shí)現(xiàn)文件上傳功能。

st.file_uploader實(shí)現(xiàn)文件上傳時(shí),包括以下的功能:

  • 本地文件選擇:創(chuàng)建一個(gè)文件上傳組件,然后用戶可通過(guò)該組件選擇本地文件進(jìn)行上傳
  • 限制文件類型:可以指定允許上傳的文件擴(kuò)展名
  • 支持多文件上傳:能夠同時(shí)選擇并上傳多個(gè)文件

它的主要參數(shù)有:

名稱類型說(shuō)明
labelstr解釋文件上傳用途的簡(jiǎn)短標(biāo)簽
type[str]允許上傳的文件擴(kuò)展名數(shù)組
accept_multiple_filesbool是否允許同時(shí)上傳多個(gè)文件
keystr組件的唯一標(biāo)識(shí)
helpstr上傳文件的提示信息
on_changefunc文件上傳時(shí)的回調(diào)函數(shù)
argstuple傳遞給回調(diào)函數(shù)的可選參數(shù)元組
kwargsdict傳遞給回調(diào)函數(shù)的可選參數(shù)字典
label_visibilitystr標(biāo)簽的可見(jiàn)性

注意,label_visibility參數(shù)是配合label一起使用的,label_visibility只有3種值:

  • visible:這是默認(rèn)值,表示正常顯示label
  • hidden:顯示空占位符
  • collapsed:不顯示標(biāo)簽或占位符

label參數(shù)也支持一些markdown格式,可以讓標(biāo)簽內(nèi)容顯示的更加豐富。

下面通過(guò)一些示例來(lái)演示上傳的使用方法:

1.1. 基本使用

在這個(gè)示例中,st.file_uploader函數(shù)創(chuàng)建了一個(gè)文件上傳組件,標(biāo)簽為 “選擇文件”。

當(dāng)用戶選擇并上傳文件后,應(yīng)用程序會(huì)顯示上傳文件的文件名。

import streamlit as st

uploaded_file = st.file_uploader("選擇文件:")
if uploaded_file is not None:
    st.write(uploaded_file.name)

1.2. 上傳限制

默認(rèn)情況下,Streamlit 允許上傳的文件大小限制為 200MB

如果需要修改這個(gè)限制,可以通過(guò)配置server.maxUploadSize選項(xiàng)來(lái)實(shí)現(xiàn)。

例如,要將上傳文件大小限制設(shè)置為 500MB,可以在Streamlit的配置文件config.toml文件中添加以下配置:

[server]
maxUploadSize = 500

1.3. 允許的文件類型

通過(guò)type參數(shù)指定允許上傳的文件類型。

例如,只允許上傳圖片文件(png 和 jpg 格式),可以這樣使用:

import streamlit as st

uploaded_file = st.file_uploader("選擇圖片文件", type=["png", "jpg"])

1.4. 上傳多個(gè)文件

如果需要允許用戶上傳多個(gè)文件,可以將accept_multiple_files參數(shù)設(shè)置為True。

示例如下:

import streamlit as st

uploaded_files = st.file_uploader("選擇多個(gè)文件:", accept_multiple_files=True)
for uploaded_file in uploaded_files:
    st.write(uploaded_file.name)

1.5. 文件上傳后的回調(diào)

上傳文件后,可以對(duì)文件進(jìn)行各種處理。

例如,可以讀取文件內(nèi)容、將文件保存到本地、使用文件數(shù)據(jù)進(jìn)行計(jì)算等。

以下是一個(gè)讀取上傳的 CSV 文件并顯示數(shù)據(jù)的示例:

import streamlit as st
import pandas as pd

uploaded_file = st.file_uploader("選擇 CSV 文件:")
if uploaded_file is not None:
    dataframe = pd.read_csv(uploaded_file)
    st.write(dataframe)

2. 下載 st.download_button

Streamlit中一般使用st.download_button來(lái)實(shí)現(xiàn)文件下載功能。

當(dāng)用戶點(diǎn)擊下載按鈕時(shí),可以將指定的文件內(nèi)容下載到本地設(shè)備。

這一功能在許多場(chǎng)景中都非常實(shí)用,比如讓用戶下載數(shù)據(jù)報(bào)表、圖片、文檔等。

st.download_button的主要參數(shù)有:

名稱類型說(shuō)明
labelstr解釋文件下載用途的簡(jiǎn)短標(biāo)簽
datastr / bytes / file要下載文件的內(nèi)容
file_namestr指定下載文件的名稱,若未指定則自動(dòng)生成
mimestr數(shù)據(jù)的 MIME 類型
keystr組件的唯一標(biāo)識(shí)
helpstr下載文件的提示信息
on_clickfunc按鈕點(diǎn)擊時(shí)的回調(diào)函數(shù)
argstuple傳遞給回調(diào)函數(shù)的可選參數(shù)元組
kwargsdict傳遞給回調(diào)函數(shù)的可選參數(shù)字典
typestr指定按鈕類型
iconstr按鈕標(biāo)簽旁顯示的表情符號(hào)或圖標(biāo)

注意,type參數(shù)只有3種類型:

  • primary:背景為應(yīng)用主色強(qiáng)調(diào)
  • secondary:與背景協(xié)調(diào)
  • tertiary:無(wú)框無(wú)背景純文本

下面通過(guò)一些示例來(lái)演示下載的使用方法:

2.1. 基本使用

下面是一個(gè)簡(jiǎn)單的示例,展示如何使用st.download_button下載一個(gè)字符串內(nèi)容的文件。

import streamlit as st

text_contents = "這是一段用來(lái)下載的文字。"
st.download_button("下載文本文件:", text_contents)

2.2. 下載 CSV 文件

這個(gè)示例中,我們先將DataFrame轉(zhuǎn)換為 CSV 格式的字節(jié)數(shù)據(jù),然后通過(guò)st.download_button提供下載。

import streamlit as st
import pandas as pd

@st.cache_data
def convert_df(df):
    # 緩存轉(zhuǎn)換結(jié)果,避免每次重新計(jì)算
    return df.to_csv()


df = pd.DataFrame({"col1": [1, 2, 3], "col2": ["a", "b", "c"]})
csv_data = convert_df(df)

st.download_button(
    label="下載 CSV",
    data=csv_data,
    file_name="data.csv",
    mime="text/csv",
)

2.3. 下載圖片文件

這個(gè)示例中,我們打開(kāi)一個(gè)圖片文件,以二進(jìn)制讀取模式讀取文件內(nèi)容,并將其作為data參數(shù)傳遞給下載按鈕。

import streamlit as st

with open("image.jpg", "rb") as file:
    btn = st.download_button(
        label="下載圖片",
        data=file,
        file_name="image.jpg",
        mime="image/jpeg"
    )

3. 總結(jié)

總的來(lái)說(shuō),Streamlit中的st.file_uploaderst.download_button組件是實(shí)現(xiàn)文件交互的關(guān)鍵工具。

使用st.file_uploader時(shí)要注意上傳大小限制,合理設(shè)置標(biāo)簽與鍵值,處理好文件類型及多文件上傳情況。

對(duì)于st.download_button,需留意內(nèi)存占用,準(zhǔn)確設(shè)置文件內(nèi)容、名稱與MIME類型,考慮按鈕樣式及回調(diào)函數(shù),同時(shí)防止應(yīng)用意外重新運(yùn)行。

到此這篇關(guān)于Python Streamlit實(shí)現(xiàn)文件的上傳和下載功能的文章就介紹到這了,更多相關(guān)Python Streamlit文件上傳下載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中的"沒(méi)有那個(gè)文件"錯(cuò)誤(FileNotFoundError)的解決方法詳解

    Python中的"沒(méi)有那個(gè)文件"錯(cuò)誤(FileNotFoundError)的解決方法詳解

    在Python編程中,遇到“沒(méi)有那個(gè)文件”錯(cuò)誤(FileNotFoundError)是常見(jiàn)的問(wèn)題之一,本文將詳細(xì)分析這個(gè)錯(cuò)誤的原因,并提供實(shí)用的解決方案和指南,有需要的可以參考下
    2024-11-11
  • 如何使用python生成大量數(shù)據(jù)寫(xiě)入es數(shù)據(jù)庫(kù)并查詢操作

    如何使用python生成大量數(shù)據(jù)寫(xiě)入es數(shù)據(jù)庫(kù)并查詢操作

    這篇文章主要介紹了如何使用python生成大量數(shù)據(jù)寫(xiě)入es數(shù)據(jù)庫(kù)并查詢操作,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Python自定義元類的實(shí)例講解

    Python自定義元類的實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于Python自定義元類的實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-03-03
  • Python之 requests的使用(一)

    Python之 requests的使用(一)

    requests是一個(gè)很實(shí)用的Python HTTP客戶端庫(kù),爬蟲(chóng)和測(cè)試服務(wù)器響應(yīng)數(shù)據(jù)時(shí)經(jīng)常會(huì)用到,requests是Python語(yǔ)言的第三方的庫(kù),專門(mén)用于發(fā)送HTTP請(qǐng)求,使用起來(lái)比urllib簡(jiǎn)潔很多,這篇文章主要介紹requests的基礎(chǔ)用法
    2023-04-04
  • Python通過(guò)列表創(chuàng)建DataFrame的常見(jiàn)方法

    Python通過(guò)列表創(chuàng)建DataFrame的常見(jiàn)方法

    本文介紹了通過(guò)列表創(chuàng)建DataFrame的多種方法,包括單層/嵌套列表、指定索引、處理不均勻長(zhǎng)度,并建議使用字典構(gòu)建鍵對(duì)關(guān)系數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧
    2025-07-07
  • Selenium定位元素操作示例

    Selenium定位元素操作示例

    這篇文章主要介紹了Selenium定位元素操作,結(jié)合實(shí)例形式總結(jié)分析了Selenium通過(guò)ID、name、XPath、標(biāo)簽名稱、類名等進(jìn)行元素定位操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08
  • Python的常用基礎(chǔ)模塊之sys模塊詳解

    Python的常用基礎(chǔ)模塊之sys模塊詳解

    這篇文章主要介紹了Python的常用基礎(chǔ)模塊之sys模塊詳解,sys 模塊提供訪問(wèn) Python 解釋器使用或維護(hù)的屬性,以及與 Python 解釋器進(jìn)行交互的方法,需要的朋友可以參考下
    2023-08-08
  • Opencv識(shí)別圖片顏色并繪制輪廓實(shí)現(xiàn)代碼示例

    Opencv識(shí)別圖片顏色并繪制輪廓實(shí)現(xiàn)代碼示例

    這篇文章主要給大家介紹了關(guān)于Opencv識(shí)別圖片顏色并繪制輪廓實(shí)現(xiàn)的相關(guān)資料,實(shí)驗(yàn)代碼和現(xiàn)象展示了如何從原始圖像中識(shí)別和突出顯示特定顏色區(qū)域,并通過(guò)圖像處理技術(shù)增強(qiáng)識(shí)別效果,需要的朋友可以參考下
    2024-12-12
  • python線程安全及多進(jìn)程多線程實(shí)現(xiàn)方法詳解

    python線程安全及多進(jìn)程多線程實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了python線程安全及多進(jìn)程多線程實(shí)現(xiàn)方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python怎樣引用其他文件夾下的py文件

    Python怎樣引用其他文件夾下的py文件

    這篇文章主要介紹了Python怎樣引用其他文件夾下的py文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評(píng)論