Как прочитать файл в Python Flask - PullRequest
0 голосов
/ 07 февраля 2019

Я хочу реализовать простую функцию поиска, которая, когда пользователь вводит текст в поле, проходит через json file [large.js], чтобы увидеть, есть ли какая-либо соответствующая запись.Если да, результат будет показан.

Проблема в том, что когда я запускаю py-файл, возникает ошибка No such file or directory "large"

Любая идея будет отличной.Спасибо

Ниже приведен код Python [application.py]

from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
WORDS = []
with open("large", "r") as file:
    for line in file.readlines():
        WORDS.append(line.rstrip()) 
@app.route("/")
def index():
    return render_template("index.html")

@app.route("/search")
def search():
    q = request.args.get("q")
    words = [word for word in WORDS if word.startswith(q)]
    return jsonify(words)

Ниже приведен HTML-код [templates / index.html]

<input type="text">
<ul></ul>
<script src ="large.js"></script>
<script>
let input = document.querySelector("input")
input.onkeyup = function (){
let html = "";
if (input.value){
for (word of WORDS){
if (word.startsWith(input.value)){
html += "<li>" + word +"</li>";
}} }
document.querySelector("ul").innerHTML = html;
};
</script>

large.js файл, содержащий json

let WORDS = [
"a",
"abandon",
"abandoned",
"ability",
"able"]

enter image description here

enter image description here

1 Ответ

0 голосов
/ 07 февраля 2019
  1. Создайте папку с именем static, а затем внутри папки static создайте другую папку с именем js и поместите туда файл large.js

  2. В вашем templates/index.html измените <script src ="large.js"></script> на <script src ="{{ url_for('static', filename='js/large.js') }}"></script>

После чего структура вашего приложения должна выглядеть примерно так:

enter image description here

А затем попробуйте что-то вроде ниже в вашем коде и дайте мне знать, что происходит

import os
from flask import Flask, render_template, request, jsonify

basedir = os.path.abspath(os.path.dirname(__file__))
data_file = os.path.join(basedir, 'static/js/large.js')

WORDS = []
with open(data_file, "r") as file:
    for line in file.readlines():
        WORDS.append(line.rstrip())

app = Flask(__name__)

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

@app.route("/search")
def search():
    q = request.args.get("q")
    words = [word for word in WORDS if word.startswith(q)]
    return jsonify(words)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...