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文件.最终,按照子文件夹单独 ...
随机推荐
- 最新版的 react-native 降级处理
1.react-native 常见操作 (1)react-native init Demo (2)adb devices (3)react-native run-android (4)ipconfig ...
- 为什么 Linux 的 htop 命令完胜 top 命令
在 Linux 系统中,top 命令用来显示系统中正在运行的进程的实时状态,它显示了一些非常有用的信息,比如 CPU 利用情况.内存消耗情况,以及每个进程情况等.但是,你知道吗?还有另外一个命令行工具 ...
- mysql 随机取数据
SELECT * FROM table WHERE id >= (SELECT FLOOR(RAND()*MAX(id)) FROM table ) ORDER BY idLIMIT 1; 这样 ...
- SQL Server变量赋值的方法
SQL Server变量赋值我们经常会遇到,下面就为您介绍SQL Server变量赋值的两种方法,希望可以对您学习SQL Server变量赋值有所帮助. SQL Server中对已经定义的SQL Se ...
- DDD中的聚合和UML中的聚合以及组合的关系
UML:聚合关系:成员对象是整体的一部分,但是成员对象可以脱离整体对象独立存在.如汽车(Car)与引擎(Engine).轮胎(Wheel).车灯(Light)之间的关系为聚合关系,引擎.轮胎.车灯可以 ...
- Trie|如何用字典树实现搜索引擎的关键词提示功能
Trie字典树 Trie字典树又称前缀树,顾名思义,是查询前缀匹配的一种树形数据结构 可以分为插入(创建) 和 查询两部分.参考地址极客时间 下图为插入字符串的过程: 创建完成后,每个字符串最后一个字 ...
- HTML5 2D平台游戏开发#11斜坡物理
在游戏中会经常遇到斜坡地形,比如众所周知的魂斗罗,角色可以在坡上移动和跳跃: 斜坡在2D游戏中很常见,处理起来也较为棘手.最初我打算用分离轴定律来实现,在建立了一个物理模型之后: 发现上坡时没什么问题 ...
- secureCrt Linux 文件传输
1.在secureCRT终端下输入rz命令,查看Linux是否安装rz文件传输服务 如果提示未安装则先安装rz服务:安装命令: apt-get install lrzsz 2.进入要上传的目的文件 ...
- rsync客户端命令使用简介
rsync是linux下很流行的增量备份工具,也支持本地文件(夹)复制至远程,而且支持只传输增量部分,也是一个代码(程序)发布的好工具. 基本用法如下: rsync [一堆选项] 源文件(夹) 目标文 ...
- 快速用CMD打开当前目录
按住shift,鼠标右键,选择在此处打开命令行窗口.