Welcome to the K-free blog;|

k-free

园龄:5年8个月粉丝:5关注:7

Python ---- 基于Flask框架做出简易网页端上传两文件并对比出不同内容

复制代码
# -*- coding: utf-8 -*-
import os
from flask import Flask, request, url_for, send_from_directory, flash, get_flashed_messages, render_template
from werkzeug.utils import secure_filename
import difflib
import sys

ALLOWED_EXTENSIONS = set(['properties', 'conf', 'py', 'txt'])

app = Flask(__name__)
app.config['SECRET_KEY'] = '123456'
app.config['UPLOAD_FOLDER'] = os.getcwd()
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
files = []

def readfile(filename):
    try:
        fileHandle=open(filename, encoding='gb18030',errors='ignore')
        text=fileHandle.read().splitlines()
        fileHandle.close()
        return text
    except IOError as error:
        print("Read file Error:"+str(error))
        sys.exit()

def web_diff(file1,file2):
    text1_lines = readfile(os.getcwd()+'\\'+ file1)
    text2_lines = readfile(os.getcwd()+'\\'+ file2)
    d = difflib.HtmlDiff()
    result = d.make_file(text1_lines, text2_lines, context=True)
    old_str='charset=ISO-8859-1'
    new_str='charset=UTF-8'
    with open('templates/result.html', 'w', encoding='utf-8') as f:
        f.writelines(result.replace(old_str,new_str))



def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS


@app.route('/uploads/<filename>')
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'],
                               filename)


@app.route('/upload/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        for file in request.files.getlist('file'):
            if file and allowed_file(file.filename):
                filename = secure_filename(file.filename)
                file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
                file = str(file)
                files.append(file.split()[1])
        flash('文件上传成功')
        if request.form.get('diff'):
            web_diff(files[0].replace("'",""),files[1].replace("'",""))
            return render_template('result.html')
    return render_template('upload.html')



if __name__ == '__main__':
    app.run()
复制代码

templates/upload.html

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Upload File</title>
</head>
<body>
<h1>文件上传</h1>
<form method=post enctype=multipart/form-data>
         <input type=file name=file>
         <input type=file name=file>
         <input type=submit value=上传>
    </form>
<form method=post>
         <input type=submit value=对比>
         <input name=diff type=hidden value=0>
</form>

 {% with messages = get_flashed_messages() %}
        {% if messages %}
        <ul>
            {% for message in messages %}
            <li>{{ message }}</li>
            {% endfor %}
        </ul>
        {% endif %}
        {% endwith %}
</body>
</html>
复制代码

 

本文作者:k-free

本文链接:https://www.cnblogs.com/k-free-bolg/p/13085896.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   k-free  阅读(351)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 新時代 (ウタ from ONE PIECE FILM RED) Ado
新時代 (ウタ from ONE PIECE FILM RED) - Ado
00:00 / 00:00
An audio error has occurred.

作词 : 中田ヤスタカ

作曲 : 中田ヤスタカ

新時代はこの未来だ

世界中全部 変えてしまえば

変えてしまえば

ジャマモノ やなもの なんて消して

ジャマモノ やなもの なんて消して

この世とメタモルフォーゼしようぜ

ミュージック

キミが起こす マジック

目を閉じれば未来が開いて

目を閉じれば未来が開いて

いつまでも終わりが来ないようにって

この歌を歌うよ

Do you wanna play? リアルゲーム ギリギリ

Do you wanna play? リアルゲーム ギリギリ

綱渡りみたいな旋律

認めない戻れない忘れたい

夢の中に居させて I wanna be free

見えるよ新時代が 世界の向こうへ

さあ行くよ NewWorld

新時代はこの未来だ

新時代はこの未来だ

世界中全部 変えてしまえば

変えてしまえば

果てしない音楽がもっと届くように

夢は見ないわ キミが話した

「ボクを信じて」

あれこれいらないものは消して

あれこれいらないものは消して

リアルをカラフルに越えようぜ

ミュージック

今始まる ライジング

目をつぶりみんなで逃げようよ

目をつぶりみんなで逃げようよ

今よりイイモノを見せてあげるよ

この歌を歌えば

Do you wanna play? リアルゲーム ギリギリ

Do you wanna play? リアルゲーム ギリギリ

綱渡りみたいな運命

認めない戻れない忘れたい

夢の中に居させて I wanna be free

見えるよ新時代が 世界の向こうへ

さあ行くよ NewWorld

新時代わ この未来を

新時代わ この未来を

世界中全部 変えてしまえば 変えてしまえば

果てしない音楽がもっと届くように

夢を見せるよ 夢を見せるよ

新時代だ

新時代だ

新時代だ