1. 程式人生 > >Flask統計程式碼行數

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)