本文实例为大家分享了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"))
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月16日
2024年11月16日
- 第五街的士高《印度激情版》3CD [WAV+CUE][2.4G]
- 三国志8重制版哪个武将智力高 三国志8重制版智力武将排行一览
- 三国志8重制版哪个武将好 三国志8重制版武将排行一览
- 三国志8重制版武将图像怎么保存 三国志8重制版武将图像设置方法
- 何方.1990-我不是那种人【林杰唱片】【WAV+CUE】
- 张惠妹.1999-妹力新世纪2CD【丰华】【WAV+CUE】
- 邓丽欣.2006-FANTASY【金牌大风】【WAV+CUE】
- 饭制《黑神话》蜘蛛四妹手办
- 《燕云十六声》回应跑路:年内公测版本完成95%
- 网友发现国内版《双城之战》第二季有删减:亲亲环节没了!
- 邓丽君2024-《漫步人生路》头版限量编号MQA-UHQCD[WAV+CUE]
- SergeProkofievplaysProkofiev[Dutton][FLAC+CUE]
- 永恒英文金曲精选4《TheBestOfEverlastingFavouritesVol.4》[WAV+CUE]
- 群星《国风超有戏 第9期》[320K/MP3][13.63MB]
- 群星《国风超有戏 第9期》[FLAC/分轨][72.56MB]