Can't st.text_input work in an if loop

Hi users,

I am not able to save the file with an absolute path + file name. I want to save it as a csv file. I can’t hit ‘Press enter to apply’ and ‘Download CSV’ buttons.

Here’s the following code:
if st.button(“Generate Rating Curve”):
try:
# Generate rating curve
df = generate_rating_curve(diameter, slope, manning_n, invert_level)

    # Plot the rating curve
    fig, ax = plt.subplots()
    ax.plot(df['Flow (m³/s)'], df['Elevation (mOD)'])
    ax.set_ylabel("Elevation (mOD)")
    ax.set_xlabel("Flow (m³/s)")
    ax.grid(True)
    st.pyplot(fig)
    
  
    # Optional file name input
    file_name_input = st.text_input("Enter the file name for the CSV (with extension, e.g., rating_curve.csv)", value="")
    
    if file_name_input:
        if not file_name_input.endswith(".csv"):
            st.error("File name must end with '.csv'")
        else:
            # Save file locally
            file_path = os.path.join(os.getcwd(), file_name_input)
            df.to_csv(file_path, index=False)
            st.success(f"File saved successfully at: {file_path}")
    
    # Always provide download button with default name
    csv = df.to_csv(index=False)
    st.download_button(
        label="Download CSV",
        data=csv,
        file_name="rating_curve.csv" if not file_name_input else file_name_input,
        mime='text/csv'
    )
    
except Exception as e:
    st.error(f"An error occurred: {str(e)}")

If you’re creating a debugging post, please include the following info:

  1. I am running this app locally and not deployed.
  2. I am not getting an error message.
  3. Streamlit version is 1.36 and Python version is 3.11.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.