python实现统计你一共写了多少行代码
程序员要保证一定的代码量就必须勤奋的敲代码,但怎么知道自己一共写了多少代码呢,笔者用python写了个简单的脚本,遍历所有的.java,.cpp,.c文件的行数,但是正如大家所知,java生成了许多代码,所以有许多水分,准确性并不太高,只具有一定的参考价值。
import os
import easygui as g
import sys
import chardet
path = 'C:/'
path='D:/Data/CProject/dataStruct/PAT/PAT'
path='F:/Workspaces'
path2='D:/Data/CProject'
path3='D:/WorkSpace/SoftWare/cocos2d-x-2.2.3/projects'
path4='F:/MyWrokspace'
iforjava=0;
iforcpp=0;
iforc=0;
for root, dirs, files in os.walk(path):
#files=''.join(files)
#print(type(files))
for str1 in files:
if 'java'==str1.split('.').pop():
print("Root = ", root, "dirs = ", dirs, "files = ", str1)
count= len(open(root+'\\'+str1,'rU',encoding= 'gbk').readlines())
iforjava=iforjava+int(count)
print('行数为:',count)
for root, dirs, files in os.walk(path2):
#files=''.join(files)
#print(type(files))
for str1 in files:
if 'c'==str1.split('.').pop():
print("Root = ", root, "dirs = ", dirs, "files = ", str1)
count= len(open(root+'\\'+str1,'rU',encoding= 'gbk').readlines())
iforc=iforc+int(count)
print('行数为:',count)
if 'cpp'==str1.split('.').pop():
print("Root = ", root, "dirs = ", dirs, "files = ", str1)
count= len(open(root+'\\'+str1,'rU',encoding= 'gbk').readlines())
iforcpp=iforcpp+int(count)
print('行数为:',count)
for root, dirs, files in os.walk(path3):
#files=''.join(files)
#print(type(files))
for str1 in files:
if 'c'==str1.split('.').pop():
print("Root = ", root, "dirs = ", dirs, "files = ", str1)
count= len(open(root+'\\'+str1,'rU',encoding= 'gbk').readlines())
iforc=iforc+int(count)
print('行数为:',count)
if 'cpp'==str1.split('.').pop() and len(str1.split('.'))==2 and root.split('\\').pop()!='proj.wp8' and root.split('\\').pop()!='proj.winrt':
print("Root = ", root, "dirs = ", dirs, "files = ", str1)
count= len(open(root+'\\'+str1,'rU',encoding= 'gbk').readlines())
'''file = open(root+'\\'+str1, "rb")#要有"rb",如果没有这个的话,默认使用gbk读文件。
buf = file.read()
result = chardet.detect(buf)
file = open(root+'\\'+str1,"r",encoding=result["encoding"])
count=len(file.readlines())'''
iforcpp=iforcpp+int(count)
print('行数为:',count)
for root, dirs, files in os.walk(path4):
#files=''.join(files)
#print(type(files))
for str1 in files:
if 'java'==str1.split('.').pop()and root.split('\\').pop()!='style':
print("Root = ", root, "dirs = ", dirs, "files = ", str1)
count= len(open(root+'\\'+str1,'rU',encoding= ('gbk' or 'utf-8')).readlines())
iforjava=iforjava+int(count)
print('行数为:',count)
i=iforjava+iforc+iforcpp
print('总行数为:',i)
lineall=str(i)
g.msgbox("嗨,你一共写了"+lineall+"行代码,要继续加油哦^_^")
g.msgbox("其中\nC语言"+str(iforc)+"行\nC++"+str(iforcpp)+"行\njava"+str(iforjava)+"行")
os.system('pause')
在打开文件的时候,老是因为GBK编码与UTF-8编码出错,因为不知道文件的编程格式,所以会以错误的编码方式打开,所说可以通过chardet包解决,但似乎还没有引入到python3中,所以只能手动改。。。。
运行截图如下:
python实现统计你一共写了多少行代码的更多相关文章
- 开源一个Mac漂亮的小工具 PPRows for Mac, 在Mac上优雅的计算你写了多少行代码
开源一个Mac漂亮的小工具 PPRows for Mac, 在Mac上优雅的计算你写了多少行代码. 开源地址: https://github.com/jkpang/PPRows
- 写一个程序,统计自己C语言共写了多少行代码。ver2.00
概要 完成一个程序,作用是统计一个文件夹下面所有文件的代码行数.输入是一个文件夹的绝对路径,输出是代码行数.所以此程序的新特点有两个: 统计某一文件夹下的所有文件: 可以任意指定本机硬盘上任何位置的某 ...
- python爬煎蛋妹子图--20多行代码搞定煎蛋妹子图库
如果说一个人够无聊的话... 就会做一些十分美(wei)丽(suo)的事情啦哈哈哈... 好的,话不多说,进入正题. 正如标题所示,我们今天的目标很简单: 代码要少,妹子要好. 步骤如下: 1. 首先 ...
- 写一个程序,统计自己C语言共写了多少行代码,Github基本操作
前言 在上一篇博客中,本人提到了自己的文件操作可以说是几乎没用过.现在想想,这也算是只在OJ上做题的一个弊端吧.虽然通过OJ做题是一个学习代码好手段,但其他方面也要多多涉猎才好,而不是说OJ用不到文件 ...
- Python进阶系列之怎么写出pythonic的代码
使用 in/not in 检查key是否存在于字典中 判断某个key是否存在于字典中时,一般的初学者想到的方法是,先以列表的形式把字典所有的key返回,在判断该key是否存在于key列表中 d = { ...
- 帮同事写了几行代码,在 安装/卸载 程序里 注册/卸载 OCX控件
写了个小控制台程序,这个程序用来注册 / 卸载OCX控件,用在Inno Setup做的安装卸载程序里. #include "stdafx.h" #include <windo ...
- Python人脸识别最佳教材典范,40行代码搭建人脸识别系统!
Face Id是一款高端的人脸解锁软件,官方称:"在一百万张脸中识别出你的脸."百度.谷歌.腾讯等各大企业都花费数亿来鞭策人工智能的崛起,而实际的人脸识别技术是否有那么神奇? 绿帽 ...
- Python+moviepy使用manual_tracking和headblur函数10行代码实现视频人脸追踪打马赛克
☞ ░ 前往老猿Python博文目录 ░ 一.背景知识 1.1.headblur简介 追踪人脸打马赛克需要使用headblur函数. 调用语法: headblur(clip,fx,fy,r_zone, ...
- 图片全部加载完成之后再显示页面ui,公司项目里用上,自己写的几行代码
说明: -----onload事件 这里我并没有考虑ie的兼容性 因为项目是移动端的: -----求大神指正~ -----自己测试正常 页面没加载完之前会有一个提示 /************** ...
随机推荐
- MS-sqlserver数据库2008如何转换成2000
http://bbs.csdn.net/topics/390438560?page=1#post-394316973 MS-sqlserver数据库2008如何转换成2000 回你这个贴等于我写个博客 ...
- web classpath 路径说明
classpath路径在每个J2ee项目中都会用到,即WEB-INF下面的classes目录,所有src目录下面的java.xml.properties等文件编译后都会在此,所以在开发时常将相应的xm ...
- iconv命令详解
功能] 对于给定文件把它的内容从一种编码转换成另一种编码. [描述] -f encoding :把字符从encoding编码开始转换. -t encoding :把字符转换到encoding编码. ...
- json2.js的用途(拯救IE)
json2.js提供了json的序列化(JSON.stringify)和反序列化方法(JSON.parse):可以将一个Object或Array转换成json字符串,也可以将一个json字符串转换成一 ...
- 转:Java NIO系列教程(二) Channel
Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道.但流的读写通常是单向的. 通道可以异步地读写. 通道中的数据总是要先读到一个Buffer,或者总是要从一个Bu ...
- 一个简单的web服务器
写在前面 新的一年了,新的开始,打算重新看一遍asp.net本质论这本书,再重新认识一下,查漏补缺,认认真真的过一遍. 一个简单的web服务器 首先需要引入命名空间: System.Net,关于网络编 ...
- C++中构造函数详解及显式调用构造函数
C++构造函数详解及显式调用构造函数 c++类的构造函数详解 一. 构造函 ...
- ExtJS学习之路第七步:contentEl与renderTo的区别
上回在Panel的应用中我们应该能大致区分开conteEl和renderTo,这回我们从定义中区分. 在Panel的API中, contentEl:String指定一个现有的HTML元素或者id作为此 ...
- 繁华模拟赛 Evensgn玩序列
#include<iostream> #include<cstdio> #include<string> #include<cstring> #incl ...
- BC.36.Gunner(hash)
Gunner Accepts: 391 Submissions: 1397 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536 ...