
你可以将目录树的生成及其呈现方式分离为html。
要生成树,可以使用一个简单的递归函数:
def make_tree(path): tree = dict(name=os.path.basename(path), children=[]) try: lst = os.listdir(path) except OSError: pass #ignore errors else: for name in lst: fn = os.path.join(path, name) if os.path.isdir(fn): tree['children'].append(make_tree(fn)) else: tree['children'].append(dict(name=name)) return tree
要将其呈现为html,可以使用jinja2的循环
recursive功能:
<!doctype html><title>Path: {{ tree.name }}</title><h1>{{ tree.name }}</h1><ul>{%- for item in tree.children recursive %} <li>{{ item.name }} {%- if item.children -%} <ul>{{ loop(item.children) }}</ul> {%- endif %}</li>{%- endfor %}</ul>将html放入
templates/dirtree.html文件中。要对其进行测试,请运行以下代码并访问http://localhost:8888/:
import osfrom flask import Flask, render_templateapp = Flask(__name__)@app.route('/')def dirtree(): path = os.path.expanduser(u'~') return render_template('dirtree.html', tree=make_tree(path))if __name__=="__main__": app.run(host='localhost', port=8888, debug=True)欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)