Python实现代码统计工具

本文实例为大家分享了Python实现代码统计工具的具体代码,供大家参考,具体内容如下

思路:首先获取所有文件,然后统计每个文件中代码的行数,最后将行数相加.

实现的功能:

统计每个文件的行数;

统计总行数;

支持指定统计文件类型,排除不想统计的文件类型;

排除空行;

排除注释行

import os
import sys
import os.path
#for i in sys.argv:
# print (i)

# 判断单个文件的代码行数
def count_file_lines(file_path):
 line_count = 0
 flag=True
 try:
  fp = open(file_path,"r",encoding="utf-8")
  encoding_type="utf-8"
  fp.close()
 except:
  encoding_type="gbk"
 with open(file_path,"r",encoding=encoding_type) as fp:
  for line in fp:
  #print (line_count)
   if line.strip()=="":
    continue
   else:
    if line.strip().endswith("'''") and flag == False:
     flag=True
     continue
    if line.strip().endswith('"""') and flag == False:
     flag=True
     continue
    if flag == False:
     continue
    if line.strip().startswith("#encoding") or line.strip().startswith("#-*-"):
     line_count += 1
    #elif line.strip().startswith('"""') and line.strip().endswith('"""') and line.strip()!='"""':
  #continue
    #elif line.strip().startswith("'''") and line.strip().endswith("'''") and line.strip()!="'''":
  #continue
    elif line.strip().startswith('#'):
     continue
    elif line.strip().startswith("'''") and flag == True:
     flag = False
     continue
    elif line.strip().startswith('"""') and flag == True:
     flag = False
     continue
    else:
     line_count += 1
 return line_count

def count_code_lines(path,file_types=[]):
 # 判断路径是否存在
 if not os.path.exists(path):
  print("您输入的目录或文件路径不存在")
  return 0

 line_count=0 #代码行总数
 file_lines_dict={} #每个文件代码行数

 # 判断是否为文件
 if os.path.isfile(path):
  file_type = os.path.splitext(path)[1][1:] #取到文件后缀名

 # 判断文件类型是否满足条件
 if len(file_types)==0:
  file_types=["py","cpp","c","java","ruby","ini","go","html","css","js","txt","vbs","php","asp","sh"]
 if file_type in file_types:
  line_count = count_file_lines(path)
  return line_count
 else:
  file_path = []
  for root, dirs, files in os.walk(path):
   for file in files:
    file_path.append(os.path.join(root,file))
    for f in file_path:
     file_type = os.path.splitext(f)[1][1:]
     if len(file_types)==0:
      file_types=

["py","cpp","c","java","ruby","ini","go","html","css","js","txt","vbs","php","asp","sh"]
     if file_type not in file_types:
      continue
      line_num = count_file_lines(f)
      line_count += line_num
      file_lines_dict[f] = line_num
    return line_count,file_lines_dict

if __name__=="__main__":
 print (sys.argv)
 if len(sys.argv) < 2:
  print ("请输入待统计行数的代码绝对路径!")
  sys.exit()
 count_path = sys.argv[1]
 file_types = []
 if len(sys.argv) >2:
  for i in sys.argv[2:]:
   file_types.append(i)

#print(count_path,file_types)
print(count_code_lines(count_path,file_types))
#print(count_file_lines("b.py"))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python tkinter图形界面代码统计工具

    本文为大家分享了python tkinter图形界面代码统计工具,供大家参考,具体内容如下 #encoding=utf-8 import os,sys,time from collections import defaultdict from tkinter import * import tkinter.messagebox from tkinter import ttk from tkinter import scrolledtext root= Tk() root.title("有效代码统

  • 使用Python设计一个代码统计工具

    问题 设计一个程序,用于统计一个项目中的代码行数,包括文件个数,代码行数,注释行数,空行行数.尽量设计灵活一点可以通过输入不同参数来统计不同语言的项目,例如: # type用于指定文件类型 python counter.py --type python 输出: files:10 code_lines:200 comments:100 blanks:20 分析 这是一个看起来很简单,但做起来有点复杂的设计题,我们可以把问题化小,只要能正确统计一个文件的代码行数,那么统计一个目录也不成问题,其中最复

  • python3使用GUI统计代码量

    本文实例为大家分享了python3使用GUI统计代码量的具体代码,供大家参考,具体内容如下 # coding=utf-8 ''' 选择一个路径 遍历路径下的每一个文件,统计代码量 字典存储 每一种类型文件的代码行数,eg: *.py -> 行数 全局变量 总行数 需要注意的是,这里仅仅能打开utf-8编码的文件,其他类型的文件无法打开,会出现解码错误 解决方法:使用try-except语句,遇到解码错误就跳过,即 except UnicodeDecodeError: ''' import eas

  • python实现统计代码行数的小工具

    一个用python实现的统计代码行数的小工具,供大家参考,具体内容如下 实现功能 计算出某一目录以及子目录下代码文件的行数 在计算代码的过程中,只对标准命名的文件进行统计,如[文件名.文件类型] 排除了以"#"开头的包含文件,宏定义等,如#include, #define, #pragma等 排除了c,cpp文件中的"//", "/-/"等的注释 排除了python文件中import, from 等开头的导入 使用方法 新建countLines.

  • python统计指定目录内文件的代码行数

    python统计指定目录内文件的代码行数,程序实现统计指定目录内各个python文件的代码总行数,注释行数,空行数,并算出所占百分比 这符合一些公司的小需求,实际代码量的统计工作 效果如图 代码如下: #coding:utf-8 import os,re #代码所在目录 FILE_PATH = './' def analyze_code(codefilesource): ''' 打开一个py文件,统计其中的代码行数,包括空行和注释 返回含该文件总行数,注释行数,空行数的列表 :param cod

  • Python实现统计代码行的方法分析

    本文实例讲述了Python实现统计代码行的方法.分享给大家供大家参考,具体如下: 参加光荣之路测试开发班已三月有余,吴总上课也总问" 咱们的课上了这么多次了大家实践了多少行代码了?".这里是一个一脸懵逼的表情.该怎么统计呢?一个个文件数当然不可取,能用代码解决的事咱们坚决不动手.最近在网上刷题时也正好遇到有这么一道题,所以决定撸一撸. 题目:有个目录,里面是你自己写过的程序,统计一下你写过多少行代码.包括空行和注释,但是要分别列出来. 首先分析一下思路捋一下大象装冰箱的步骤,从一个给定

  • python tkinter图形界面代码统计工具(更新)

    本文为大家分享了python tkinter图形界面代码统计工具的更新版,供大家参考,具体内容如下 代码统计工具 修改了导出excel功能,把原来的主文件进行了拆分 code_count_windows.py #encoding=utf-8 import os,sys,time from collections import defaultdict from tkinter import * import tkinter.messagebox from tkinter import ttk fr

  • python实现代码统计程序

    本文实例为大家分享了python实现代码统计程序的具体代码,供大家参考,具体内容如下 # encoding="utf-8" """ 统计代码行数 """ import sys import os def count_file_line(path): """统计文件的有效行数""" countLine = 0 # 设置一个标志位,当遇到以""&quo

  • python实现python代码统计器

    本文实例为大家分享了python中的代码行数统计,供大家参考,具体内容如下 思路:统计文件中代码的总行数减去空行单行注释以及多行注释 功能: 1.获取文件内容的总行数 2.排除空行 单行注释 多行注释 def code_statistics(path): # # 打开这个文件 with open(path, 'r', encoding='utf-8') as openFile: # 按列读取 fileline = openFile.readlines() # 给非代码行一个变量 i = 0 #

  • python 统计代码行数简单实例

     python 统计代码行数简单实例 送测的时候,发现需要统计代码行数 于是写了个小程序统计自己的代码的行数. #calclate_code_lines.py import os def afileline(f_path): res = 0 f = open(f_path) for lines in f: if lines.split(): res += 1 return res if __name__=='__main__': host = 'E:'+os.sep+'develop'+os.s

随机推荐