Flask统计代码行数

Posted st-st

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask统计代码行数相关的知识,希望对你有一定的参考价值。

流程:

  1.获取前端的文件

  2.判断文件是否zip文件

  3.解压压缩包并保存

  4.遍历解压后的文件夹

  5.判断文件是否py文件,将绝对路径添加到列表

  6.循环列表,排除注释和空号,统计行数

from flask import Blueprint
from flask import render_template
from flask import request
from flask import current_app
import time
import os
import shutil

uploadBlue = Blueprint("uploadBlue",__name__)

@uploadBlue.route("/upload",methods=["GET","POST"])
def upload():
    error = ""
    if request.method == "POST":
        # 获取前端的上传的文件
        file = request.files.get("file")
        # 判断后缀是否zip的文件
        zip_file = file.filename.rsplit(".",1)
        if zip_file[-1] != "zip":
            return render_template("upload.html", error="上传的不是zip文件,请重新上传")

        # 解压保存
        t = int(time.time())
        upload_path = os.path.join(current_app.config.root_path,"files",str(t))
        try:
            shutil._unpack_zipfile(file,upload_path)        # 解压文件
        except Exception as e:
            print(e)
            shutil.rmtree(upload_path)          # 删除非空文件夹
            return render_template("upload.html", error="文件解压异常")

        # 遍历保存的文件夹得到所有.py文件
        file_list = []
        for (dirpath,dirname,filenames) in os.walk(upload_path):
            # 判断文件是否py结尾,如果是则将绝对路径添加到列表
            for file in filenames:
                if file.rsplit(".",1)[-1] == "py":
                    file_path = os.path.join(upload_path,file)
                    file_list.append(file_path)
        num = 0
        for pyfile in file_list:
            with open(pyfile,mode=rb) as f:
                for line in f:
                    # 井号开头或者空行则跳过
                    if line.replace(b" ",b"").strip().startswith(b"#") or not line.strip():
                        continue
                    num += 1
        return str(num)

    return render_template("upload.html",error=error)

 

以上是关于Flask统计代码行数的主要内容,如果未能解决你的问题,请参考以下文章

代码统计工具,要支持差异统计,如:代码修改行数、删除行数、新增行数等

Ubuntu下统计代码行数

Ubuntu下如何统计代码行数

vscode 代码行数统计 vs2019代码行数统计

gitlab有没有办法一次性统计所有分支的代码行数?

Python实现代码行数统计工具