极乐门资源网 Design By www.ioogu.com
本文实例为大家分享了python实现代码统计程序的具体代码,供大家参考,具体内容如下
# encoding="utf-8" """ 统计代码行数 """ import sys import os def count_file_line(path): """统计文件的有效行数""" countLine = 0 # 设置一个标志位,当遇到以"""或者'''开头或者结尾的时候,置为False flag = True # 使用utf-8格式的编码方式读取文件,如果读取失败,将使用gbk编码方式读取文件 try: fp = open(path, "r", encoding="utf-8") encoding_type = "utf-8" fp.close() except: encoding_type = "gbk" with open(path, "r", encoding=encoding_type) as fp: for line in fp: # 空行不统计 if line.strip(): line = line.strip() # 注意下面的这两个elif必须要前面,这样子当('"""')结束之后及时将flag置为True if line.endswith('"""') and flag == False: flag = True continue if line.endswith("'''") and flag == False: flag = True continue if flag == False: continue if line.startswith("#!") or line.startswith("#-*-") or line.startswith("# encoding"): countLine += 1 # 如果以“#”号开头的,不统计 elif line.startswith("#"): continue # 如果同时以("'''")或者('"""')开头或者结尾(比如:"""aaa"""),那么不统计 elif line.startswith('"""') and line.endswith('"""') and line != '"""': continue elif line.startswith("'''") and line.endswith("'''") and line != "'''": continue # 如果以("'''")或者('"""')开头或者结尾(比如:aaa"""或者"""bbb),那么不统计 # 注意下面的这两个elif必须要放后面 elif line.startswith('"""') and flag == True: flag = False continue elif line.startswith("'''") and flag == True: flag = False continue else: countLine += 1 return countLine def count_codes(path,file_types=[]): """统计所有文件代码行""" # 判断path是目录还是文件,如果是目录的话,遍历目录下所有的文件 if not os.path.exists(path): print("您输入的路径不存在!") return 0 countTotalLine = 0 file_paths = {} if os.path.isdir(path): for root,dirs,files in os.walk(path): for name in files: if not file_types: file_types = ["txt","py"] # print(file_types) if os.path.splitext(name)[1][1:] in file_types: file_path = os.path.normpath(os.path.join(root,name)) # print(file_path) file_lines = count_file_line(file_path) countTotalLine += file_lines file_paths[file_path] = file_lines else: if not file_types: file_types = ["txt","py"] if os.path.splitext(path)[1][1:] in file_types: countTotalLine = count_file_line(path) file_paths[path] = count_file_line(path) return countTotalLine,file_paths if __name__ == "__main__": # 打印出命令行输入的参数 # print(sys.argv) if len(sys.argv) < 2: print("请输入路径!") sys.exit() path = sys.argv[1] # print(path) file_types = sys.argv[2:] # print(file_types) print(count_codes(path,file_types))
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
python,代码统计
极乐门资源网 Design By www.ioogu.com
极乐门资源网
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
极乐门资源网 Design By www.ioogu.com
暂无python实现代码统计程序的评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2025年01月11日
2025年01月11日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]