You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask开发问题:无法将用户选择的选项保存至TXT文件

问题解决与代码修正

首先排查核心问题并给出针对性修改:

1. 前端必填配置

你的HTML中的select标签必须添加multiple属性,否则无法支持多选,后端getlist也无法获取到多个选项值。示例前端代码:

<form action="/submit" method="POST">
  <select name="disease" multiple size="5">
    <!-- 41个选项示例 -->
    <option value="Fungal infection">Fungal infection</option>
    <option value="Hepatitis C">Hepatitis C</option>
    <option value="Hepatitis E">Hepatitis E</option>
    <option value="Alcoholic hepatitis">Alcoholic hepatitis</option>
    <!-- 其余选项 -->
  </select>
  <button type="submit">提交选择</button>
</form>

2. 后端代码修正

原代码存在两个核心问题:一是用w模式覆盖文件而非追加;二是未将单次提交的多选结果格式化为你需要的列表行。修正后的代码如下:

from flask import Flask, render_template, request, session

app = Flask(__name__)
app.secret_key = "your_random_secret_key_here"  # 用于安全存储session数据

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/submit', methods=['POST'])
def submit():
    selected_diseases = request.form.getlist('disease')
    
    if selected_diseases:
        # 格式化为你需要的[选项1, 选项2]格式
        formatted_record = f"[{', '.join(selected_diseases)}]\n"
        # 用追加模式(a)写入文件,避免覆盖已有记录
        try:
            with open('selected_diseases.txt', 'a', encoding='utf-8') as file:
                file.write(formatted_record)
            session['last_selected'] = selected_diseases  # 存储最近一次选择到session
            return f"Saved! [symptoms: {selected_diseases}]"
        except Exception as e:
            return f"保存失败:{str(e)}"
    return "请至少选择一个选项"

@app.route('/show_selected')
def show_selected():
    # 从session获取最近一次选择,替代不安全的全局变量
    return f"最近选择的症状:{session.get('last_selected', [])}"

if __name__ == '__main__':
    app.run(debug=False)

关键修改说明

  • 文件写入模式:将w改为a,实现每次提交的追加写入,而非覆盖原有内容。
  • 格式处理:用', '.join(selected_diseases)将多选列表转为逗号分隔字符串,再包裹方括号,符合你需要的每行一个列表的格式。
  • 移除全局变量:改用session存储最近一次选择,避免Flask多线程环境下的全局变量冲突问题。
  • 编码与异常处理:指定encoding='utf-8'防止乱码,添加try-except捕获文件写入异常。

内容的提问来源于stack exchange,提问作者With Me

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 04:43:10