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中,所以只能手动改。。。。

运行截图如下:

运行
结果
种类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494467.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业机器人:四大家族垄断全球市场

来源:广发证券在世界工业机器人业界中,以瑞士的ABB、德国的库卡、日本的发那科和安川电机最为著名,并称工业机器人四大家族。全球机器人市场中,四大家族一直占据着重要位置,总市场份额一度超过50%以上。2015年以来由于…

Lucene正则表达式查询RegenxQuery

1 /*2 * 正则表达式查询3 */4 5 6 import java.io.IOException;7 8 import org.apache.lucene.analysis.standard.StandardAnalyzer;9 import org.apache.lucene.document.Document; 10 import org.apache.lucene.document.Field; 11 import org.apache.lucene.index.IndexWr…

pyinstaller--将py文件转化成exe

首先要注意一下:打包python文件成exe格式这个过程只能在windows环境下运行 1. 直接在命令行用pip安装 pyinstaller pip install pyinstaller</p> 2. 下载安装pyinstaler运行时所需要的windows拓展—pywin32 pywin32:http://sourceforge.net/projects/pywin32/files/p…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 9丨平均工资:部门与公司比较【难度困难】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

深度|全面了解一下这个世界上最奇葩的公司:Google!

来源&#xff1a;轮回的刻度2015年8月11日&#xff0c;Google公司架构调整的资讯与分析刷遍了朋友圈。这些数不胜数的文章&#xff0c;几乎都是这样这样一种基调&#xff1a;Google好像做了一件很重大的事情&#xff0c;但是谁也不清楚它为什么这么做。这个问题也困扰着我&…

【原创】关于移动铁通某些网站打不开的问题

上下文&#xff1a;同学家移动铁通宽带&#xff0c;想要访问 www.xads.gov.cn (西安地税官网&#xff0c;做的我就不评价了) 有时网站能打开&#xff0c;有时却打不开 解决过程&#xff1a;想起自己家用的也是移动铁通&#xff0c;也是某些网站能有时能打开有时打不开。还是采用…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 9丨有趣的电影【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

一文看懂机器人技术的发展史

来源&#xff1a;传感器技术机器人技术是综合了计算机、控制论、机构学、信息和传感技术、人工智能、仿生学等多学科而形成的高新技术&#xff0c;是当代研究十分活跃&#xff0c;应用日益广泛的领域。机器人应用情况&#xff0c;是一个国家工业自动化水平的重要标志。机器人并…

python实现简单爬虫抓取图片

最近在学习python,正如大家所知&#xff0c;python在网络爬虫方面有着广泛的应用&#xff0c;下面是一个利用python程序抓取网络图片的简单程序&#xff0c;可以批量下载一个网站更新的图片&#xff0c;其中使用了代理IP的技术。 import urllib.request import os import rand…

m3u:直播流的html接近下载

转载于&#xff1a;http://en.wikipedia.org/wiki/M3U M3U is a computer file format that stores multimedia playlists. It is supported by many applications, including media players such as Windows Media Player, iTunes, Winamp, foobar2000, Totem and JuK. Conten…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 10丨换座位【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

5G之后是什么?

来源&#xff1a;IEEE电气电子工程师学会如果你听过有关5G的承诺它可为自动驾驶汽车和沉浸式虚拟现实保驾护航的宣传&#xff0c;估计你很快就会意识到下一代无线网络将需要承载多少数据。但是&#xff0c;工程师们是不是太专注于提供满足数据饥渴型应用程序需要的低延迟网络&a…

javaweb实现验证码功能

在javaweb的用户注册与登陆功能时&#xff0c;有时为了防止漏洞或者大量注册&#xff0c;可以使用验证码功能&#xff0c;下面是验证码的一个简单实现 验证码类 public class ValiImg extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletRespon…

int _tmain(int argc, _TCHAR* argv[])

argv接收从命令行传来的参数&#xff0c;在程序里可以通过argv[i]来使用。比方你要执行的.exe文件名为test,你在命令行中输入test 2 hello world! 那么在程序里argv[0]就是hello,argv[1]就是world!上面输入的2告诉程序一共有几个命令行参数&#xff0c;用argc表示&#xff0c;就…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 10丨买下所有产品的客户【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

数据洪流时代的芯片之变

芯片无所不在&#xff0c;没有芯片&#xff0c;就没有现代生活。 图片来源&#xff1a;百度图片来源&#xff1a;科学网摘要&#xff1a;自中兴事件发生以来&#xff0c;对于我国半导体及芯片产业一直存在两种截然相反的认识。自中兴事件发生以来&#xff0c;对于我国半导体及芯…

javamail实现邮箱验证功能

javamail是基于SMTP协议和POP3协议的邮件发送与接收系统&#xff0c;在用户注册与登陆的过程中&#xff0c;常需要用到邮箱验证功能&#xff0c;下面是基于javamail的一个简单实现 用户注册后通过servlet得到邮箱地址&#xff0c;并使用方法发送邮件 //校验用户名if(dao.find…

[zz]libev 简介

1 libev libev所实现的功能就是一个强大的reactor,可能notify事件主要包括下面这些&#xff1a; ev_io // IO可读可写ev_stat // 文件属性变化ev_async // 激活线程ev_signal // 信号处理ev_timer // 定时器ev_periodic // 周期任务ev_child // 子进程状态变化ev_fork // 开辟进…

我没有超能力,我只是用了这10个网站。

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家 & 总榜前十&#x1f3c6;、HDZ核心组成员。欢迎点赞、收藏、评论 &#x1f345; 粉丝专属福利&#xff1a;知识体系、面试题库、技术互助、简历模板。文末公众号领取 1、今日热…

干货 | 加速AI发展!一文了解GPU Computing

来源&#xff1a; 启迪之星上海摘要&#xff1a;英伟达的显卡对于游戏达人来说再为熟悉不过&#xff0c;并逐渐融入到我们的日常生活当中。英伟达的显卡对于游戏达人来说再为熟悉不过&#xff0c;并逐渐融入到我们的日常生活当中。近日&#xff0c;世界上第一款“光线追踪”GPU…