python flas的html制表符拆分

2024-06-24 13:10:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

在内容.py在

    import fnmatch
import os
matches = []
for root, dirnames, filenames in os.walk("Z:\\"):
    for filename in fnmatch.filter(filenames, '*.iso'):
        matches.append(os.path.join(filename))

new_list = matches

result_string = """<HTML>
<body>
    <h1>ISO LIST</h1>
    <table>\n"""
for i in new_list:
    result_string += "        <tr>\n            "
    for j in i:
        result_string += "<td>%s</td>" %j
    result_string += "\n        </tr>\n"
result_string += """    </table>
</body>
</HTML>"""
display = open("table.html", 'w')
display.write(result_string)
display.close()

##for item in matches:
    ##print(item)

在网站.py在

^{pr2}$

代码有效,但我得到以下列表:

ISO LIST

Ubuntu10.1.iso
WindowsServer2016.iso
Ubuntu10.2.iso

是否可以使用“简单”排序?所以我会:

ISO LIST

Ubuntu10.1.iso
Ubuntu10.2.iso
WindowsServer2016.iso

更完美的是:

ISO LIST

UBUNTU:
Ubuntu10.1.iso
Ubuntu10.2.iso

WindowsServer:
WindowsServer2016.iso

所以它们分别出现在不同的标签上?在

我已经试过一些东西了,但没用。在

谨致问候, 病房


Tags: 代码inpyimportforstringosdisplay
2条回答

Flasky方法是使用^{}。创建一个HTML文件并使用Jinja syntax显示数据。像这样:

在应用程序副本在

from flask import Flask, render_template

app = Flask(__name__)

def parse_key(match):
    for x, y in enumerate(match):
        if y.isdigit():
            return match[:x]

@app.route('/')
def index():
    data = {}
    matches = [
        'Ubuntu10.1.iso',
        'WindowsServer2016.iso',
        'Ubuntu10.2.iso'
    ]

    data = {parse_key(x): [y for y in matches if parse_key(y) == parse_key(x)] for x in matches}

    for key in data:
        data[key].sort()
    // check if the request is coming from JS.
    if request.is_xhr:
        return json.dumps(data)
    return render_template('ISOs.html', data=data)

模板/ISOs.html在

^{pr2}$

结果:

ISO列表

Windows服务器:

  • WindowsServer2016.iso

Ubuntu:

  • Ubuntu10.1.iso
  • Ubuntu10.2.iso

编辑:

我没意识到这个名单必须更新。不需要重新加载页面,只需添加一些JavaScript来命中interval上的端点。注意,我已经改变了这两个应用程序副本以及ISOs.html与JS合作。你应该读一下这个method。在

JavaScript

var $isoListDiv = $('#isoList'),
    checkISOList = function checkISOList() {
    $.ajax({
        url: '/',
        type: 'GET'
    }).done(function(data) {
        try {
            JSON.parse(data);
        } catch (e) {
            // display error
            return false;
        }
        setISOList(data);
    }).fail(function(jqXHR) {
        // display error
    });
}, setISOList = function (data) {
    var isoList = "";
    Object.keys(data).forEach(function(key) {
        isoList += "<h3>" + key + "</h3><ul>";
        for (var x = 0; x < data[key].length; x++) {
            isoList += "<li>" + data[key][x] + "</li>";
        }
        isoList += "</ul><br>";
    });
    $isoListDiv.html(isoList);
};
setInterval(checkISOList, 2000);

这几乎就是基本的Python。如果您需要在Python代码中构造HTML(例如,学习如何使用Jinja2来呈现模板会更好、更强大!)在

Python代码:(更改了列表,因此不进行排序)

new_list = ['Windows.Server.2016.iso', 'Ubuntu.10.1.iso', 'Ubuntu.10.2.iso']

table_rows = ['\t\t<tr><td>%s</td></tr>' % i for i in sorted(new_list)]

results_string = '\n'.join([
    '<html>',
    '<body>',
    '\t<h1>ISO LIST</h1>',
    '\t<table>',
    '\n'.join(table_rows),
    '\t</table>',
    '</body>',
    '</html>'
])

打印结果字符串:

^{pr2}$

相关问题 更多 >