• 文件空行,注释,行数统计


    # 不知不觉你已经写了很多python代码了,代码全部都放在e盘下面的my_code文件夹中,突然突发奇想,想统计了一下总共写了多少行代码,包括空行和注释,要把代码的行数、空行数、注释行数都统计出来
    # 1、找到e盘下的所有py文件
    # 2、每个文件进行遍历,找总行数,空行数,注释行数都统计
    # 空行就是
    # 注释行 三点开头,三点结尾 #号开头且都是首

    1、每个统计数单写方法
    import os
    
    #统计多行注释的注释行数
    def note_three(f):
        t = False #开关关闭状态
        count = 0 #总数初始为0
        for i in f:
    
            if i.strip().startswith("'''"):  #当行是'''开头的,开始记行数
                t = not t #开关打开
                count += 1 #开头行和结尾行的计数
                continue
    
            if t == True:
                count += 1 #注释中间的行计数
        f.seek(0) #文件索引归初始位置
    
        return count #返回多行注释的行数
    
    def note_one(f):
        count=0 ##号注释统计初始值
        for line in f:
            if line.strip().startswith('#'): #统计所有以#号开头的行
                count+=1 #每次加1
        f.seek(0) #文件索引归初始位置
        return  count #返回单行注释的行数
    
    
    
    def null_num(f):
        count=0 #空行统计初始值
        for line in f :
            if not line.strip(): #如果空行,统计数加1
                count+=1
        f.seek(0) #文件索引归初始位置
        return count #返回空行行数
    
    def row_num(f):
        count=0 #文件行数统计初始值
        for line in f :
            count+=1 #每变量一行,文件总行数加1
        f.seek(0) #文件索引归初始位置
        return  count #返回文件总行数
    
    
    
    path='.' #文件路径
    files = os.listdir(path) #获取路径下文件list
    count_dic = {} #结果存放处
    for name in files: #变量文件
        if name.endswith('.py'): #文件以.py结尾,开始统计文件行数,空行,注释
            file = open(name, encoding='utf-8') #打开文件
            j_count=note_one(file)+note_three(file) #注释总数
            count=row_num(file) #行总数
            i_count=null_num(file) #空行总数
            count_dic[name]={'行数': count, '空行': i_count, '注释': j_count} #循环放入字典每个文件的各项信息
    print(count_dic) #打印结果

     2、减少遍历文件的次数

    # 不知不觉你已经写了很多python代码了,代码全部都放在e盘下面的my_code文件夹中,突然突发奇想,想统计了一下总共写了多少行代码,包括空行和注释,要把代码的行数、空行数、注释行数都统计出来
    # 1、找到e盘下的所有py文件
    # 2、每个文件进行遍历,找总行数,空行数,注释行数都统计
    # 空行就是
    
    # 注释行 三点开头,三点结尾   #号开头且都是首
    
    import os
    
    
    #统计多行注释的注释行数
    def note_three(f):
        t = False #开关关闭状态
        count = 0 #总数初始为0
        for i in f:
    
            if i.strip().startswith("'''"):  #当行是'''开头的,开始记行数
                t = not t #开关打开
                count += 1 #开头行和结尾行的计数
                continue
    
            if t == True:
                count += 1 #注释中间的行计数
        f.seek(0) #文件索引归初始位置
    
        return count #返回多行注释的行数
    
    def count_file(f):
        row_num=0 #总行数
        note_one=0 #单行注释行数
        null_num=0 #空行数
        for index,line in enumerate(f): #遍历文件行内容,和行号
            row_num += 1 #每遍历一行加1
            if not line.strip(): #遇到空行加1
                null_num += 1
            elif line.strip().startswith('#'):#每遇到#号开头单行注释加1
                note_one += 1
        f.seek(0) #文件索引归0
        return row_num,null_num,note_one #返回总行数,空行总数,单行注释总数
    
    path='.' #文件路径
    files = os.listdir(path) #获取路径下文件list
    count_dic = {} #结果存放处
    for name in files: #变量文件
        if name.endswith('.py'): #文件以.py结尾,开始统计文件行数,空行,注释
            file = open(name, encoding='utf-8') #打开文件
            row_num,null_num,note_one=count_file(file) #获取总行数,空行总数,单行注释总数
            note_num=note_one+note_three(file) #注释总数
            count_dic[name]={'行数': row_num, '空行': null_num, '注释': note_num} #循环放入字典每个文件的各项信息
    print(count_dic) #打印结果
  • 相关阅读:
    [置顶] 宏途_LCD调试流程.
    字典树的数据结构及基本算法的实现
    uva 10714 Ants(贪心)
    paip.输入法编程---增加码表类型
    chomp方法
    ios 限制输入长度
    我所理解的设计模式(C++实现)——策略模式(Strategy Pattern)
    Android用户界面 UI组件--AdapterView及其子类(一) ListView及各种Adapter详解
    C#系列教程——switch定义及使用
    局域网内linux由ip反解析主机名
  • 原文地址:https://www.cnblogs.com/xiaokuangnvhai/p/11165714.html
Copyright © 2020-2023  润新知