【问题标题】:cannot read line by line and execute operation in python无法逐行读取并在python中执行操作
【发布时间】:2019-06-13 00:26:56
【问题描述】:

我正在编写一个 python 代码来创建一个 web 服务来 ping ip 地址并在网页上显示结果。

我正在编写一个烧瓶代码来 ping ip 地址并将它们显示在同一页面上。但是,我的代码只能读取第一行并执行 ping 作业并在第二个 textarea 框中显示结果。

你能说出我在逐行读取文本文件中缺少什么并完成这项工作吗?

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>

【问题讨论】:

    标签: jquery json python-3.x flask


    【解决方案1】:

    您在for row... 循环中只返回一行。

    您可能希望将每一行附加到一个数组中,然后返回:

    def buffer_data():
        your_data = []
    

    并将return (row... 替换为your_data.append(row...)

    【讨论】:

    • 这有帮助,但是当结果显示在输出文本区域时,有一个“,”从第二行开始并从那里开始......有什么建议吗?在你说请通过它之后我编辑了我的代码。
    • 编辑有点混乱,你应该return store_data而不是return (data2)
    • 对不起,应该是你说的,我的错字。那么,现在可以帮助我吗?
    • 您现在需要查看一些事情,因为我无法提供任何具体的帮助。查看您的输入/输出文件,从rsplit() 等生成的内容,以查找空行的来源。
    • 谢谢,最困难的部分你帮了我。我会弄清楚的。
    猜你喜欢
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多