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哈哈~) ...
随机推荐
- 初学MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品. Mysql默认端口号: 3306 超级用户:root prompt 修改提示符. ( ...
- DDD领域驱动之干活(四)补充篇!
距离上一篇DDD系列完结已经过了很长一段时间,项目也搁置了一段时间,想想还是继续完善下去. DDD领域驱动之干货(三)完结篇! 上一篇说到了如何实现uow配合Repository在autofac和au ...
- bc计算A股上市新股依次涨停股价
几年的股市可谓惨不忍睹,不提也罢.唯有打新中签的时候,心里稍微有那么一点点的补偿,于是内心就YY可以30板吗,可以40板吗.于是就写了个连板的bc程序,每次中签的时候就运行一下,然后尽情的YY,然而每 ...
- Entity Framework入门教程:SQLite数据源访问
[环境安装] 可以通过NuGet直接搜索安装SQLite需要用到的组件 或者直接使用程序包管理器控制台 > Install-Package System.Data.SQLite 通过ADO.NE ...
- php中的捕获异常操作
<?php if(!isset($_SESSION)){ session_start(); } include '../common/mysql.class.php'; include '../ ...
- 【Android Developers Training】 104. 接受地点更新
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 微信小程序知识总结及案例集锦
微信小程序知识总结及案例集锦 微信小程序的发展会和微信公众号一样,在某个时间点爆发 学习路径 微信小程序最好的教程肯定是官方的文档啦,点击这里直达 微信官方文档 认真跟着文档看一遍,相信有vue前端经 ...
- winform利用委托delegate进行窗体间通信
前段时间学习委托,感觉很模糊的样子,也做过许多实例,但是项目中一直没有用到,今天在项目中遇到一个很简单的例子,现在拿出来,做一个简单的记录. 要求:将弹出框里勾选的内容返回到主面板上. 工具:委托. ...
- python多线程爬虫设计及实现示例
爬虫的基本步骤分为:获取,解析,存储.假设这里获取和存储为io密集型(访问网络和数据存储),解析为cpu密集型.那么在设计多线程爬虫时主要有两种方案:第一种方案是一个线程完成三个步骤,然后运行多个线程 ...
- 推荐给IT运维工程师必须学习的4本Linux书籍
我们的人生如游戏,每个人都扮演着不同的角色,有普通玩家.NPC.普通野怪,终极Boss,都有不同的级别之分,我们在技术方面又何尝不是呢,我们大部分人都是普通野怪,遍地都是,很容易被别人虐,没有什么特殊 ...