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文件.最终,按照子文件夹单独 ...
随机推荐
- vscode - 选中多行操作
选中Alt+鼠标左键即可,按ESC退出 ,具体演示效果如下
- react-navigation + react-native-vector-icons
1.安装 yarn add react-navigation react-native-vector-icons 2.创建 root.js import React, {Component} from ...
- 虚拟机只有IPv6,没有ipv4
1.修改配置文件 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none HWADDR=00:0C:29:20: ...
- 【BIEE】由于排序顺序不兼容,集合操作失败
问题描述 使用BIEE数据透视表时,使用了UNION进行数据组合,但是在浏览结果时意外出错了,报错如下截图: 问题分析 原因暂时未知 问题解决 目前使用UNION进行聚合,只需要将UNION修改为UN ...
- iOS项目工程添加.a文件遇到的Dsymutil Error
将.a文件加入工程,很多教程讲的都是: 右键选择Add->Existing Files…,选择.a文件和相应的.h头文件.或者将这两个文件拖入XCode工程目录结构中,在弹出的界面中勾选Copy ...
- VBA小功能集合-判断列内是否有重复值
1.判断列内是否有重复值: Dim arrT As Range Dim rng As Range Set arrT = Range("A:A")'判读A列单元格 For Each ...
- oracle复合索引的选择和使用
声明:虽然题目是Oracle.但同样适合MySQL InnoDB索引 在大多数情况下.复合索引比单字段索引好 很多系统就是靠新建一些合适的复合索引.使效率大幅度提高 ...
- centos中git使用
先用root用户登录, yum install git 进行安装,然后退出用普通用户登录. ssh-keygen -t rsa -C "tuhooo@163.com" 登录GitH ...
- redhat安装中文man手册
1.下载中文man手册 http://download.chinaunix.net/download.php?id=13232&ResourceID=6537 2.上传至服务器并解压 tar ...
- EasyUI分页(前台分页和后台分页)
整理一下以前的总结: 分页包括前台分页和后台分页两种,针对数据量比较小的,比如说单位,角色等,可以使用前台分页,而针对日志文件这些,需要后台分页. 先说说前台分页吧: function pagerFi ...