python--代码统计(进阶版)
在上一篇的随笔中发表了代码统计小程序,但是发表后,我发现,以前写的代码怎么办
写了那么多,怎么就从0开始了呢,,,,我还是个孩子啊,不能这么残忍
于是,代码统计进阶版:统计当前目录下所有指定文件类型的行数
#coding:gbk
import os
import time
from CountItem.FindCode import *
n = 0
'''查找历史记录的行数'''
try:
with open('TotalLines','r') as p:
lastline = ''
for lastline in p.readlines():
pass
index = lastline.find('>>')
n = int(lastline[index+2:])
except ValueError as e:
n = 0
except FileNotFoundError:
n = 0
'''文件列表'''
fileList = FindCode().getLocalfile(os.getcwd())
'''计算行数'''
for filename in fileList:
try:
with open(filename,'r') as f:
try:
lines = f.readlines()
except UnicodeDecodeError:
'''编码错误,不用管,我们要的是行数'''
'''嗯,,掩耳盗铃'''
pass
for s in lines:
'''不计入空行'''
if s == '\n':
continue
n += 1
except FileNotFoundError as e:
print('文件名或文件路径错误,没有该文件!')
os.system('pause')
os._exit(1)
except OSError as e:
print('文件名不合法')
os.system('pause')
os._exit(1)
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) + '代码行数>>' + str(n) + '\n')
'''写入文件'''
with open('TotalLines','a') as f:
f.write(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) + '代码行数>>' + str(n) + '\n')
os.system('pause')
#coding:gbk
import os
class FindCode():
'''初始化查找的文件类型列表'''
def __init__(self):
self.targetFile = []
self.targetFile.append('c')
self.targetFile.append('cpp')
self.targetFile.append('py')
self.targetFile.append('java')
'''递归查找文件,用绝对路径'''
def getLocalfile(self,findpath):
fileList = os.listdir(findpath)
aimsList = []
for filepath in fileList:
filepath = findpath + '\\' + filepath
if os.path.isdir(filepath):
aimsList.extend(self.getLocalfile(filepath))
else:
if self.selectFile(filepath):
aimsList.append(filepath)
return aimsList
def selectFile(self,filepath):
index = filepath.find('.')
lastname = filepath[index+1:]
return True if lastname in self.targetFile else False
if __name__ == '__main__':
Demo = FindCode()
print('\n'.join(x for x in Demo.getLocalfile(os.getcwd())))
但是,不能统计一次挪一次窝吧,再改!
'''文件列表'''
filepath = input('请输入指定文件路径(绝对路径):')
if os.path.isdir(filepath):
fileList = FindCode().getLocalfile(filepath)

这个就对了,很爽,,,
python--代码统计(进阶版)的更多相关文章
- Python代码统计工具
目录 Python代码统计工具 声明 一. 问题提出 二. 代码实现 三. 效果验证 Python代码统计工具 标签: Python 代码统计 声明 本文将对<Python实现C代码统计工具(一 ...
- python代码统计
代码统计 修改filename为文件夹or文件地址,然后统计所有python文件代码 import os import sys def count_code_lines(filename): res ...
- Git项目代码统计-Python3版gitstats
gitstats是一个Git项目统计工具,可以统计git项目代码提交量,提交者的贡献量及活动热力图等信息,如下图. gitstats基于Python2.7,使用git log命令生成统计信息,基于gn ...
- python代码统计核酸检测结果截图
#QQ:502440275@qq.com#本截图适合安康码截图,如需其他地区截图统计,可与我QQ或QQ邮箱联系#1.在当前文件夹下创建imgs文件夹用于存放图片,图片格式.jpg#2.在当前文件夹下创 ...
- python面向对象初始进阶版 通过一道题带你认识面向对象
定义一个类 class Person: #公共属性 animal='高级动物' soul='有灵魂' language='语言' def init(self,country,name,sex,age, ...
- Python实现代码统计工具——终极加速篇
Python实现代码统计工具--终极加速篇 声明 本文对于先前系列文章中实现的C/Python代码统计工具(CPLineCounter),通过C扩展接口重写核心算法加以优化,并与网上常见的统计工具做对 ...
- Python实现C代码统计工具(二)
目录 Python实现C代码统计工具(二) 声明 一. 问题提出 二. 代码实现 三. 效果验证 Python实现C代码统计工具(二) 标签: Python 代码统计 声明 本文将对<Pytho ...
- Python实现C代码统计工具(一)
目录 Python实现C代码统计工具(一) 声明 一. 问题提出 二. 代码实现 三. 效果验证 四. 后记 Python实现C代码统计工具(一) 标签: Python 代码统计 声明 本文将基于Py ...
- python三级菜单实例(傻瓜版和进阶版)
程序: python三级菜单 要求: : 1.打印省.市.县三级菜单 2.可返回上一级 3.可随时退出程序 方案一:傻瓜版(其实傻瓜版考察的主要是思路!思路清楚了,那才不是傻瓜!O(∩_∩)O哈哈~) ...
随机推荐
- 在C#中初遇Socket - 1
后期项目实战:多人在线聊天室 源码位置:https://git.oschina.net/z13qu/BlogProjects 课前须知 这里不讲解Socket和TCP/IP的底层知识 对于初学者来说底 ...
- (cljs/run-at (JSVM. :browser) "搭建刚好可用的开发环境!")
前言 书接上一回,在了解cljs基本语法后并在clojurescript.net的奇特错误提示后,我们必须痛定思痛地搭建一个本地的开发环境,以便后续深入地学习cljs. 现有的构建工具 由于浏览器 ...
- vmware提示:此虚拟机似乎正在使用中,取得该虚拟机的所有权失败错误
用vm的时候,没有挂起和关闭虚拟机,直接关实体机.然后不幸的就异常了. 启动提示:此虚拟机似乎正在使用中.如果此虚拟机已在使用中,请按"取消"按钮,以免损坏它.如果此虚拟机未使用, ...
- 修改linux的系统时间
可以使用date命令.date用于打印或设置系统日期和时间.设置系统时间需要root权限.用法示例:设置系统日期成2015年08月13日,这样会把具体时间设置清空成00:00:00$ sudo dat ...
- 手机端 图片的移动缩放旋转兼容touch
//缩放var initialScale = 1;var currentScale = 1;touch.on('#target', 'pinch', function (ev) { currentSc ...
- ionic搭建与基础
ionic搭建与基础 一.环境搭建 安装 npm install -g cordova npm install -g ionic 创建 项目 ionic start MyProject blank i ...
- java项目(非ssm等框架)下的quartz定时器任务
第一步:引包 要使用Quartz,必须要引入以下这几个包: 1.log4j-1.2.16 2.quartz-2.1.7 3.slf4j-api-1.6.1.jar 4.slf4j-log4j12-1. ...
- MySQL(四)--练习题
 2.1 编写一条 SQL 语句,从 Product(商品)表中选取出“登记日期(regist_date)在 2009 年 4 月 28 日之后”的商品.查询结果要包含 product_name 和 ...
- String详细学习
学这些东西,就像是扎马步.小说里郭靖学不会招数,就会扎马步.搞JS,内力还是必须要深厚,深厚,深厚. 1,stringObject.slice(start,end) slice() 方法可提取字符串的 ...
- eclipse 配置ssh
用maven 新建工程 ,然后在src 下面的main 文件夹下新建 java文件夹,在src新建test 文件夹,然后再在下面新建java文件夹然后在pom.xml中引入ssh的依赖, 最后在res ...