python3 计算文件夹中所有py文件里面代码行数,注释行数,空行数
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文件里面代码行数,注释行数,空行数的更多相关文章
- 自动执行文件夹中的py文件
写一个函数,接收一个地址,执行其中的py文件,包括子文件.path.endswith('.py') 判断以'.py'结尾,是什么类型的文件.os.system('python %s'%path) 模拟 ...
- PHP遍历、删除文件夹中的所有文件
<?php header("Content-type:text/html;charset=utf-8"); /** * getDirFile 遍历文件夹中的所有文件 * @p ...
- C++读取文件夹中所有的文件或者是特定后缀的文件
由于经常有读取一个文件夹中的很多随机编号的文件,很多时候需要读取某些特定格式的所有文件. 下面的代码可以读取指定文件家中的所有文件和文件夹中格式为jpg的文件 参考: http://www.2cto. ...
- C#遍历指定文件夹中的所有文件(转)
原文链接:http://www.cnblogs.com/qianqianfy/archive/2009/07/08/1518974.html 1. C#遍历指定文件夹中的所有文件 DirectoryI ...
- C#遍历指定文件夹中的所有文件(转)
C#遍历指定文件夹中的所有文件 DirectoryInfo TheFolder=new DirectoryInfo(folderFullName);//遍历文件夹foreach(DirectoryIn ...
- 基于Python——实现解压文件夹中的.zip文件
[背景]当一个文件夹里存好好多.zip文件需要解压时,手动一个个解压再给文件重命名是一件很麻烦的事情,基于此,今天介绍一种使用python实现批量解压文件夹中的压缩文件并给文件重命名的方法—— [代码 ...
- 在linux和Mac中访问某个文件夹中所有的文件
在linux和Mac中访问某个文件夹中所有的文件——输出所有的文件名 #include <stdio.h> #include <dirent.h> int main() { s ...
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
- [R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。
解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独 ...
随机推荐
- 端口监听与telnet
例一: 明明端口已经监听了,为什么远程的telnet连接不上. 远程机器 telnet 10.10.1.85 53 就是进不去. Linux 防火墙一关,ok service iptables sto ...
- 工业控制系统USB存储设备可信管理方案的(ICICS2015)论文PPT:TMSUI: A Trust Management Scheme
本PPT是发表在ICICS2015 大会的论文 TMSUI: A Trust Management Scheme of USB Storage Devices for Industrial Contr ...
- 【Nginx】HTTP配置模型
当Nginx检測到配置文件里存在配置块http{}时.会建立一个ngx_http_conf_ctx_t结构体,该结构体定义例如以下: typedef struct { void **main_conf ...
- c#关于路径的总结(转) 虚拟路径波浪号~和斜杠/的区别
c#关于路径的总结(转) 来源:http://www.cnblogs.com/yugongmengjiutian/articles/5521165.html 前一段时间写代码时经常遇到获取路径问题 ...
- CSS实现绝对定位居中
我们经常用margin:0 auto来实现水平居中,而一直认为margin:auto不能实现垂直居中……实际上,实现垂直居中仅需要声明元素高度和下面的CSS: .Absolute-Center { m ...
- 电路板上为何要有孔洞?何谓PTH/NPTH/vias(导通孔)
推荐文章:PCBA大讲堂:用数据比较OSP及ENIG表面处理电路板的焊接强度 如果你有机会拿起一片电路板,稍微观察一下会发现这电路板上有着许多大大小小的孔洞,把它拿起来对着天花板上的电灯看,还会发 ...
- Rserve方式连接别的服务器
Rserve Rserve的方式,这是一个基于TCP/IP的服务器,通过二进制协议传输数据,可以提供远程连接,使得客户端语言能够调用R 既然是TCP/IP 就可以在不同的机器上运行了 事实上官网给出了 ...
- 如何开启Apache Rewrite功能
一.Ubuntu默认未开启Rewrite支持 apche模块加载工作已分散到不同的配置文件,这样看起来似乎更为合理,管理起来也非常方便.下面看一下如何开启Rewrite模块,当用户需使用301重定向. ...
- Linux mail发送邮件
发送前一天的监控日志#!/bin/bash source /etc/profile time=`date -d '-1 day' "+%Y%m%d"` #判断服务是否已经启动 se ...
- Android蓝牙通信具体解释
蓝牙通信的大概过程例如以下: 1.首先开启蓝牙 2,搜索可用设备 3,创建蓝牙socket.获取输入输出流 4,读取和写入数据 5.断开连接关闭蓝牙 还要发送配对码发送进行推断! 以下是全部的源码:不 ...