код Python не может читать построчно и выполнять операцию - PullRequest
0 голосов
/ 13 июня 2019

Я пишу код Python для создания веб-службы для пингования IP-адресов и отображения результатов на веб-странице.

Я пишу код фляги для проверки IP-адресов и отображать их на той же странице.Но мой код может только читать первую строку, выполнять работу ping и отображать результат во втором текстовом поле.

Можете ли вы сказать, что пропущено при чтении построчно из текстового файла, и выполнить задание.

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

app = Flask(__name__)


@app.route('/_add_numbers')
def add_numbers():
    a = request.args.get('a', 0, type=str)

    def buffer_data():
        store_data = []
        var1 = str(a)
        with open("Bufferfile.txt", 'w', encoding='utf-8') as infile:
            for line in a:
                textdata1 = infile.write(line.strip(''))
            print("Done")
        with open("Bufferfile.txt", 'r', encoding='utf-8') as infile1:
            for row in infile1.read().rsplit():
                #print(row)
                # return(row)
                match1 = re.search("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?:/\d{1,2}|)", row, re.MULTILINE)
                if match1:
                    ip = match1.group(0)
                    x = os.system("ping -n 1 " + ip)
                    if x == 0:
                        store_data.append(row + "--Active" + "\n")
                        #return (row + "--Active" + "\n")
                        print(row, "--Active" + "\n")

                    else:
                        store_data.append(row + "--Active" + "\n")
                        #return (row +"--Inactive" + "\n")
                        print(row, "Inactive" + "\n")

            #data2 = infile1.read()
            return (store_data)
            print("complete")
    return jsonify(result=buffer_data())


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


if __name__ == '__main__':
    app.run(debug=True)
<!DOCTYPE html>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="{{
  url_for('static', filename='jquery.js') }}">\x3C/script>')
</script>

<script type=text/javascript>
  $SCRIPT_ROOT = {{ request.script_root|tojson|safe }};

</script>

<script type=text/javascript>
  $(function() {
    $('a#calculate').bind('click', function() {
      $.getJSON($SCRIPT_ROOT + '/_add_numbers', {
        a: $('textarea[name="a"]').val()
      }, function(data) {
        $("#result").text(data.result);
      });
      return false;
    });
  });

</script>
<h1>jQuery Example</h1>
<p><textarea type=text size=5 name=a> </textarea> =
    <textarea type=text id=result>Get the result here!..</textarea>
<p><a href=# type=submit id=calculate>Get Result!</a>

1 Ответ

0 голосов
/ 13 июня 2019

Вы возвращаете только одну строку в цикле for row....

Вместо возврата вы можете добавить каждую строку в массив и вернуть следующее:

def buffer_data():
    your_data = []

и замените оба return (row... на your_data.append(row...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...