import os,re

#代码所在位置
FILE_PATH = './' def analyze_code(codefilesource):
'''
打开一个py文件统计其中的代码行数,包括空格和注释
返回该文件总行数,注释函数,空行输
:param codefilesource:
:return:
'''
total_line = 0
comment_line = 0
black_line = 0
with open(codefilesource,'r', encoding='UTF-8') as f:
# with open(codefilesource,'rb') as f:
lines = f.readlines()
total_line = len(lines)
line_Index = 0
#遍历每一行
while line_Index < total_line:
line = lines[line_Index]
# line = str(line, encoding="utf-8")
#检查是否为注释
if line.startswith("#"):
comment_line += 1
elif re.match("\s*'''",line) is not None:
print("有\s*")
print("line_Index:", line_Index)
while re.match(".*'''$",line) is None:
print(line)
print("line_Index:", line_Index)
line = lines[line_Index]
# line = str(line, encoding="utf-8")
comment_line += 1
if(line_Index < total_line):
line_Index += 1 #检查是否为空行
elif line == "\n":
black_line += 1
line_Index += 1
print("在%s中"%codefilesource)
print("代码行数:",total_line)
print("注释行数:",comment_line,"占%0.2f%%"%(comment_line*100.0/total_line))
print("空行数:", black_line, "占%0.2f%%" % (black_line * 100.0 / total_line))
return [total_line,comment_line,black_line] def run(FILE_PATH):
#切换到code所在目录
os.chdir(FILE_PATH)
#遍历所有py文件
total_lines = 0
total_comment_lines = 0
total_black_lines = 0
for i in os.listdir(os.getcwd()):
if os.path.splitext(i)[1] == ".py":
print(os.path.splitext(i))
line = analyze_code(i)
total_lines,total_comment_lines,total_black_lines = total_lines + line[0],total_comment_lines + line[1],total_black_lines+line[2]
print("总代码行数:", total_lines)
print("总注释行数:", total_comment_lines, "占%0.2f%%" % (total_comment_lines * 100.0 / total_lines))
print("总空行数:", total_black_lines, "占%0.2f%%" % (total_black_lines * 100.0 / total_lines))
if __name__ == '__main__':
# analyze_code("calcTimes.py")
# analyze_code("Demo.py")
# analyze_code("file.py")
run(FILE_PATH)

python3 计算文件夹中所有py文件里面代码行数,注释行数,空行数的更多相关文章

  1. 自动执行文件夹中的py文件

    写一个函数,接收一个地址,执行其中的py文件,包括子文件.path.endswith('.py') 判断以'.py'结尾,是什么类型的文件.os.system('python %s'%path) 模拟 ...

  2. PHP遍历、删除文件夹中的所有文件

    <?php header("Content-type:text/html;charset=utf-8"); /** * getDirFile 遍历文件夹中的所有文件 * @p ...

  3. C++读取文件夹中所有的文件或者是特定后缀的文件

    由于经常有读取一个文件夹中的很多随机编号的文件,很多时候需要读取某些特定格式的所有文件. 下面的代码可以读取指定文件家中的所有文件和文件夹中格式为jpg的文件 参考: http://www.2cto. ...

  4. C#遍历指定文件夹中的所有文件(转)

    原文链接:http://www.cnblogs.com/qianqianfy/archive/2009/07/08/1518974.html 1. C#遍历指定文件夹中的所有文件 DirectoryI ...

  5. C#遍历指定文件夹中的所有文件(转)

    C#遍历指定文件夹中的所有文件 DirectoryInfo TheFolder=new DirectoryInfo(folderFullName);//遍历文件夹foreach(DirectoryIn ...

  6. 基于Python——实现解压文件夹中的.zip文件

    [背景]当一个文件夹里存好好多.zip文件需要解压时,手动一个个解压再给文件重命名是一件很麻烦的事情,基于此,今天介绍一种使用python实现批量解压文件夹中的压缩文件并给文件重命名的方法—— [代码 ...

  7. 在linux和Mac中访问某个文件夹中所有的文件

    在linux和Mac中访问某个文件夹中所有的文件——输出所有的文件名 #include <stdio.h> #include <dirent.h> int main() { s ...

  8. python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件

    python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...

  9. [R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。

    解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独 ...

随机推荐

  1. java web 分页实现

       分页实现的效果:    ///////// /////////////////////////////////////////////////////// /////////////////// ...

  2. Python中的import和from import

    一.Python路径介绍 在python用import或者from...import来导入相应的模块. 模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把 ...

  3. C#操作消息列队

    首先安装消息队列MSMQ,在“计算机管理-服务和应用程序-消息队列-专用队列”中新建列队名称Demo: static void SendAndReceiveMsg() { MessageQueue m ...

  4. android实现免费短信验证

    代码地址如下:http://www.demodashi.com/demo/12541.html 前言 获取短信验证码的的第三方很多,今天介绍一个获取短信验证码的demo,它有以下优势 短信到达率几乎1 ...

  5. PICT工具安装使用

    前言:PICT工具在微软公司出品一款成对组合的命令行生成工具.PICT 可有效地按照两两测试Pairwise的原理,进行测试用例设计.在使用PICT时,需要输入与测试用例相关的所有参数,以达到全面覆盖 ...

  6. Servlet的API(二)

    web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象和代表响应的response对象.request和response对象既然代表请求和响应,那我们获取 ...

  7. 转 【MQTT】在Windows下搭建MQTT服务器

    MQTT简介 MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放.简单.轻量.易于实现.这些特点使它适用于受限环境.该协议的特点有: 使用发布/订阅消息模式,提供 ...

  8. 安装Glass Box代理程序

    安装玻璃盒代理程序 目前版本的玻璃代理程序主要支持主流 Java EE 应用程序服务器(如 JBoss,Tomcat,WebLogic 和 WebSphere).玻璃盒代理程序可以自动化安装,但考虑到 ...

  9. Android使用Fragment打造万能页面切换框架

    首先我们来回顾一下传统用Activity进行的页面切换.activity之间切换.首先须要新建intent对象,给该对象设置一些必须的參数,然后调用startActivity方法进行页面跳转. 假设须 ...

  10. Android 完整开源应用大全,完整开源项目

    (Antox)聊天的  (new) (OpenKeychain)OpenPGP在android上的实现  (new) (Flock)提供同步服务 (OpenFlappyBird)以前火爆的坑爹鸟 (F ...