统计目录下所有的代码个数和总行数。

# -*- coding: utf-8 -*-
# @Author : ydf
import json
import os
from pathlib import Path
from collections import OrderedDict
from app.utils_ydf import LoggerMixin class CodeStatistics(LoggerMixin):
def __init__(self, root_dir: str = None, file_suffix_tuple=('.py',)):
self.root_dir = root_dir or Path(__file__).parent.parent
self._file_suffix_tuple = file_suffix_tuple
self.file_name__file_line_map = dict()
self._total_lines = 0 def _find_all_files(self):
"""
查到所有符合条件的文件
:return:
"""
for parent, dirnames, filenames in os.walk(self.root_dir):
for filename in filenames:
ext = filename.split('.')[-1]
if '.' + ext in self._file_suffix_tuple:
self.file_name__file_line_map[os.path.join(parent, filename)] = 0 def _conunt_file_line(self, file_name):
"""
计算一个文件的代码行数
:param file_name:
:return:
"""
for file_line in open(file_name, encoding='utf8').readlines():
if file_line != '' and file_line != '\n': # 过滤掉空行
self.file_name__file_line_map[file_name] += 1
self._total_lines += 1 def start_statistics(self):
self._find_all_files()
for file_name in self.file_name__file_line_map:
self._conunt_file_line(file_name)
self.logger.debug(json.dumps(self.file_name__file_line_map, indent=4))
ordered_dict = OrderedDict()
for k, v in sorted(self.file_name__file_line_map.items(), key=lambda itemx: itemx[1], reverse=True):
ordered_dict[k] = v
self.logger.info(json.dumps(ordered_dict, indent=4))
self.logger.info(f'文件夹{self.root_dir} 里面一共有 {len(self.file_name__file_line_map)} 个以 {self._file_suffix_tuple} 为后缀的代码文件,总行数是 {self._total_lines}')
return len(self.file_name__file_line_map), self._total_lines if __name__ == '__main__':
CodeStatistics().start_statistics()

使用python对文件夹里面所有代码行数进行统计。的更多相关文章

  1. 统计文件夹下java代码行数的小程序--主要是学习任务队列的思想

    首先感谢czbk的老师,录制的视频,让我们有这么好的学习资料.……—— 统计文件夹java文件的行数,首先想到的肯定是用递归的方法,因为文件夹下面可能包含文件夹,用递归的方法,代码容易写.(这和写简单 ...

  2. Python将文件夹下的文件名写入excel方便统计

    如题,贴代码: 1 ''' 2 #python将某文件夹下的文件名存储到excel中 3 ''' 4 5 #导入所需模块 6 import os 7 import xlwt 8 9 #定义要处理的文件 ...

  3. linux下查看目录下某种文件类型累计的代码行数

    find 路径 -name '*.py' | xargs wc -l

  4. [转] 一句shell命令搞定代码行数统计

    今天面试时,突然被面试官问到怎样用shell命令搞定某个文件夹下java代码行数的统计. 想了一下,基本思路就是找到这个文件夹下面的所有java文件,然后每个文件统计一下代码,外层套个for循环,叠加 ...

  5. OC获取文件(夹)的代码行数

    /* 考察NSString NSArray NSFileManager */ #import <Foundation/Foundation.h> /* 计算单个文件的代码行数 path:文 ...

  6. python 脚本(获取指定文件夹、指定文件格式、的代码行数、注释行数)

    1.代码的运行结果: 获取 指定文件夹下.指定文件格式 文件的: 总代码行数.总注释行数(需指定注释格式).总空行数: #coding: utf-8 import os, re # 代码所在目录 FI ...

  7. 使用PYTHON统计项目代码行数

    目录 一 使用PYTHON统计项目代码行数 二 应用实例 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 使用PYTHON统计项目代码行数 遇到一个非常小的需求:统计一个项目里头的各类源代码 ...

  8. ubuntu输入某个目录测试该目录里.C文件里代码行数shell脚本

    #!/bin/bash echo "★☆ ★☆ ★☆ ★☆ ★☆★☆★☆ ★☆ ★☆ ★☆ ★☆★" echo "★☆       统计代码行数        ☆★&qu ...

  9. python 关于文件夹的操作

    在python中,文件夹的操作主要是利用os模块来实现的, 其中关于文件夹的方法为:os.lister() , os.path.join() , os.path.isdir() #  path 表示文 ...

随机推荐

  1. Android Studio实现代码混淆

     1,在build.grandle添加,其中规则写在proguard-rules.pro中,也可以自定义一个文件,将其代替,比如eclipse常用的 proguard-project.txt: bui ...

  2. 关于mosquitto_internal.h:40:25:#include <uuid/uuid.h> 致命错误的解决

    一.安装mosquitto1.4的时候使用make的时候报以下错误: mosquitto_internal.h:40:25: 致命错误:openssl/ssl.h:没有那个文件或目录 #include ...

  3. Python基础(4)_字典、集合、bool值

    三.字典 定义:{key1:value1,key2:value2},key-value结构,key必须是不可变类型,或者可hash 基本形式:key:value特性: 1.可存放多个值 2.可修改指定 ...

  4. MYSQL:基础——触发器

    MYSQL基础——触发器 引入触发器 什么是触发器 如果你想要某条语句(或某些语句)在事件发生时自动执行.比如: 每当订购一个产品时,都从库存数量中减去订购的数量:无论何时删除一行,都在某个存档表中保 ...

  5. 自定义xhr请求

    接上一篇博客,上一篇是之前的jsonp请求方法的封装,这一篇是xhr请求的简单封装. 原理: 1:new一个xhr对象,命名为ajaxRequest,由于浏览器兼容性的问题,所以将获取xhr对象的方式 ...

  6. spring-boot4

    1.1.1. Starter pom 除了官方也有其他第三方提供的starter Websocket是服务端推数据到客户端.长连接. 1.1.1.Xml 配置文件 有些时候必须使用xml配置. 1.1 ...

  7. winform窗体取消最大化双击标题最大化

    实现目标,固定窗体大小,1.窗体标题去掉最大化按钮2.双击窗体标题也不会最大化,彻底取消最大化 问题,如果设置窗体MaximizeBox和MinimumSize属性,看似问题解决了,单随之而来的问题是 ...

  8. 【leetnode刷题笔记】Maximum Depth of binary tree

    Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...

  9. Python 案例一(计算人体体脂率)

    #计算人体体脂率 #输入部分 #身高 personHeight = input("请输入你的身高(m):") personHeight = float(personHeight) ...

  10. LINQ 学习路程 -- 查询操作 OfType

    OfType操作根据集合中的元素是否是给定的类型进行筛选 IList mixedList = new ArrayList(); mixedList.Add(); mixedList.Add(" ...