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

如何将带参数的函数封装到Flask蓝图的路由方法中?

首先,先修正你业务方法的小问题:参数列表里input_folder重复了,应该是input_folder和output_folder,正确的方法定义如下:

def extract_and_segmentate(input_folder, output_folder):
    extract_txt_from_pdf(input_folder, output_folder)
    extract_txt_from_pptx(input_folder, output_folder)
    segmentate(output_folder, output_folder, 35)

针对Flask蓝图路由无法直接设置参数的问题,给你三种实用处理方式:

方案1:通过URL查询参数传递(最适合动态传参的GET请求)

GET请求可通过URL查询字符串传递参数,在路由方法里用request.args获取参数值后,再传给业务方法。

代码示例:

from flask import request

@extraction.route('/extract', methods=['GET'])
def extract_and_segmentate_route():  # 和业务方法名区分开,避免命名冲突
    # 从查询参数中获取路径,可添加默认值或参数校验逻辑
    input_folder = request.args.get('input_folder')
    output_folder = request.args.get('output_folder')
    
    # 简单校验,防止空参数传入
    if not input_folder or not output_folder:
        return "缺少必要参数:input_folder 和 output_folder", 400
    
    # 调用业务方法
    extract_and_segmentate(input_folder, output_folder)
    return "提取和分段处理完成", 200

前端请求示例:GET /extract?input_folder=/path/to/input&output_folder=/path/to/output

方案2:用Flask配置项固定路径(适合无需动态修改的场景)

如果文件夹路径是固定的,可将路径配置在Flask的config中,业务方法直接读取配置,路由方法无需传参。

代码示例:

from flask import current_app

# 在Flask应用初始化时配置路径
app.config['INPUT_FOLDER'] = '/fixed/path/to/input'
app.config['OUTPUT_FOLDER'] = '/fixed/path/to/output'

# 修改业务方法读取配置
def extract_and_segmentate():
    input_folder = current_app.config['INPUT_FOLDER']
    output_folder = current_app.config['OUTPUT_FOLDER']
    extract_txt_from_pdf(input_folder, output_folder)
    extract_txt_from_pptx(input_folder, output_folder)
    segmentate(output_folder, output_folder, 35)

# 路由方法
@extraction.route('/extract', methods=['GET'])
def extract_and_segmentate_route():
    extract_and_segmentate()
    return "提取和分段处理完成", 200
方案3:通过环境变量传递路径(适合部署时灵活配置)

启动Flask服务前设置环境变量,代码中读取环境变量的值传给业务方法。

代码示例:

import os

@extraction.route('/extract', methods=['GET'])
def extract_and_segmentate_route():
    input_folder = os.getenv('INPUT_FOLDER')
    output_folder = os.getenv('OUTPUT_FOLDER')
    
    if not input_folder or not output_folder:
        return "环境变量 INPUT_FOLDER 或 OUTPUT_FOLDER 未设置", 400
    
    extract_and_segmentate(input_folder, output_folder)
    return "提取和分段处理完成", 200

启动时设置环境变量(Linux/Mac):

export INPUT_FOLDER=/path/to/input
export OUTPUT_FOLDER=/path/to/output
flask run

Windows(命令行):

set INPUT_FOLDER=C:\path\to\input
set OUTPUT_FOLDER=C:\path\to\output
flask run

内容的提问来源于stack exchange,提问作者Lorenzo Cutrupi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 01:15:00