账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    python webserver 如何分页返回一个文件夹中的6万条文件信息
    85
    0
    1. 使用scandir库列出了文件夹中的文件,但是当文件比较多(6万多)时候,浏览器就崩溃了
    2. 试过yield,但是下次请求时候还是返回前10条

    大家有没有好的解决方法,求教

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 要实现分页返回一个文件夹中的6万条文件信息,我们可以使用Python的Flask框架,结合数据库来存储文件信息。以下是一个简单的示例:

      首先,确保你已经安装了Flask和Flask-SQLAlchemy库。你可以使用以下命令安装:

      bash pip install Flask Flask-SQLAlchemy

      然后,创建一个名为app.py的文件,编写以下代码:

      ```python from flask import Flask, render_template, request, redirect, url_for from flask_sqlalchemy import SQLAlchemy from sqlalchemy.orm import sessionmaker from flask_bcrypt import Bcrypt

      app = Flask(name) app.config['SECRET_KEY'] = 'your_secret_key' app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///file_folder.db' db = SQLAlchemy(app) bcrypt = Bcrypt(app)

      class File(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), nullable=False) file_path = db.Column(db.String(255), nullable=False)

      def __init__(self, name, file_path):
          self.name = name
          self.file_path = file_path
      

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

      @app.route('/files', methods=['GET']) def files(): if request.args.get('page') == '1': files_per_page = 60000 start = request.args.get('start', 0) end = min(start + files_per_page, 60000) else: files_per_page = 1000 start = 0 end = 60000 if start >= end: start = 0 files = File.query.filter_by(file_path=start).order_by(File.name).all() return render_template('files.html', files=files)

      @app.route('/upload', methods=['POST']) def upload_file(): if request.files['file']: file = request.files['file'] file.save('file_folder', File(file.path)) return redirect(url_for('index')) else: return render_template('upload.html')

      if name == 'main': app.run(debug=True) ```

      在这个示例中,我们首先创建了一个名为File的类,用于存储文件信息。然后,我们创建了一个Flask应用,并配置了数据库连接。接着,我们定义了两个路由://files/路由返回一个默认的HTML模板,而/files路由根据请求参数page来分页返回文件信息。

      /files路由首先检查是否有请求参数page。如果有,它会计算出每页的文件数量(60000条),并使用startend参数来设置起始和结束位置。然后,它会根据文件路径查询数据库并按照名称排序结果。最后,它返回一个HTML模板,其中包含分页的文件列表。

      /upload路由用于处理文件上传请求。它首先检查是否有文件上传请求。如果有,它会将文件保存到文件夹中,并返回一个重定向到/files的响应。

      注意:在实际应用中,你可能需要处理文件类型、上传文件大小等其他相关问题。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部