首页 > 解决方案 > 带有上传器文件的多个选项卡的流光缓存

问题描述

我正在尝试将缓存用于作为所有选项卡输入的上传文件,但没有任何效果。没有错误消息,我只需要在每个选项卡中上传文件。

这是我的代码:

fileEval = st.file_uploader("Cargue un archivo", type=["xlsm"])

st.markdown(
'<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">',
unsafe_allow_html=True,
)
query_params = st.experimental_get_query_params()
tabs = ["DataS", "Explainer", "Shap", "RaR", "Predictions"]
if "tab" in query_params:
    active_tab = query_params["tab"][0]
else:
    active_tab = "DataS"

if active_tab not in tabs:
    st.experimental_set_query_params(tab="DataS")
    active_tab = "DataS"

li_items = "".join(
    f"""
    <li class="nav-item">
        <a class="nav-link{' active' if t==active_tab else ''}" href="/?tab={t}">{t}</a>
    </li>
    """
    for t in tabs
)
tabs_html = f"""
    <ul class="nav nav-tabs">
    {li_items}
    </ul>
"""

st.markdown(tabs_html, unsafe_allow_html=True)
st.markdown("<br>", unsafe_allow_html=True)
if active_tab == "DataS":
    #fileEval = get_data()
    # when 'Predict' is clicked, make the prediction and store it 
    #if st.button("Process"):
    if fileEval:
        dataRaw = fileInput(fileEval)
        data    = delAss(dataRaw)
        dataI   = delImp(dataRaw)

elif active_tab == "Explainer":
    if fileEval:
        dataRaw = fileInput(fileEval)
        data    = delAss(dataRaw)
        dataI   = delImp(dataRaw)
        dataI['idpers'] = 'new client'

elif active_tab == "Shap":
    if fileEval:
        dataRaw = fileInput(fileEval)
        data    = delAss(dataRaw)
        dataI   = delImp(dataRaw)
        dataI['idpers'] = 'new client'

我尝试使用st.cache函数但不起作用:

@st.cache(allow_output_mutation=True)
def get_data():
    fileEval
    return fileEval

我认为问题出在标签中,但我不知道如何解决这个问题。

标签: pythoncachingtabsstreamlit

解决方案


推荐阅读