用python3统计代码行数
今天接到一个电话面试,对方问我在一个项目中维护了多少行代码。
我懵逼了,从来没有统计过啊,怎么还会有这种需求?
当时一脸茫然的想了想,回答了一个,呃...差不多两千多行吧...感觉很心虚
挂完电话之后大概看了一下最近的一个项目,光其中某一个顶层文件就一千多行了好吧,感觉自己回答的好low
但是又不能自己挨个去统计每个文件中到底有多少行代码啊,还要去掉注释和空格,一个文件一个文件的去计算,这显然不是程序员的风格
所以又不务正业了一下,拿python写了个小程序,用来统计某个目录下一个有多少.v文件,有多少行代码。
当然,子目录也是可以统计的。
用法:把以下代码复制到新建的py文件中,将该文件放到你想统计的工程的根目录,运行一下,统计结果会生成到该PY文件的同一级目录,文件名为"code_line_count.txt"
代码如下:
# -*- coding: utf-8 -*-
import sys
import os
import codecs exts = ['.v','.vhd']
def read_line_count(fname):
count = 0
with open('code_line_count.txt','a') as f:
f.write('fname:%s\n' % fname)
with open(fname,'r',encoding='utf8') as f:
for file_line in f.readlines():
file_line = file_line.strip()
if not len(file_line) or file_line.startswith('//'):
continue
count += 1
with open('code_line_count.txt','a') as f:
f.write('line count::%s\n' % count)
return count if __name__ == '__main__':
with open('code_line_count.txt','w') as f:
f.write('\n')
count = 0
fcount = 0
for root,dirs,files in os.walk(os.getcwd()):
for f in files:
# Check the sub directorys
print(f)
fname = (root + '\\'+ f).lower()
if os.path.splitext(f)[1]:
ext = f[f.rindex('.'):]
try:
if(exts.index(ext) >= 0):
fcount += 1
c = read_line_count(fname)
count += c
with open('code_line_count.txt','a') as f:
f.write('total count:%s\n' % count)
except:
pass with open('code_line_count.txt','a') as f:
f.write('\n')
f.write('--------------------------------------\n')
f.write('total file count:%d\n' % fcount)
f.write('total line count:%d\n' % count)
部分结果如下:

两万行被我说成了两千行,哭晕在厕所
用python3统计代码行数的更多相关文章
- Eclipse统计代码行数
开发过程中,经常需要统计代码行数,这时可以通过Eclipse的Search功能来实现. 步骤: 1.在Package Explorer中选中需要统计的包: 2.单击菜单Search-->File ...
- 在Flash Builder或者Eclipse统计代码行数的方法
在Flash Builder或者Eclipse统计代码行数的方法如下图菜单栏--搜索--搜索文件
- 【Linux】常用命令-统计代码行数
公司人员流动大,经常有新的维护任务,交接时喜欢看看新来的模块的代码量,那么问题来了, 如何统计代码行数? 1,最先想到的肯定是 wc. wc -l *.h 将查看[当前目录]下头文件的代码行数,输出结 ...
- c#统计代码行数
小编,已经快学了两年编程了.昨天突发奇想,想统计下这些年到底写过多少行代码,于是做了一个这个小程序来统计代码行数.老规矩,先上图. 比较惭愧,写了两年只有2万多行.那我们还是进入下一项吧. 界面搭建我 ...
- 【未解决】对于使用Windows的IDEA进行编译的文件,但无法在Linux系统中统计代码行数的疑问
在我学习使用Windows的IDEA的过程中,将代码文件转移到Linux虚拟机当中,但无法在Linux系统中统计代码行数. 注意:拷贝进虚拟机的文件均能编译运行. 具体过程如下: root@yogil ...
- Visual Studio 统计代码行数
介绍一种简单的统计代码行数的小技巧, 使用正则表达式,用VS强大的查找功能 b[^:b#/]+.$ 最后结果:
- 用django统计代码行数+注释行数
实现统计代码行数: 1.首先在url.py中配置 from django.conf.urls import url from django.contrib import admin from app0 ...
- cloc 统计代码行数工具
cloc 统计代码行数工具 官网地址:http://cloc.sourceforge.net/ 下载完成后 会生成一个.exe文件 需要修改文件名为 cloc.exe 然后把这个文件拷贝到需要统计的根 ...
- python统计代码行数
以前写了一个java的统计代码行数的小程序,最近在看python,于是就参考前辈的代码,写了一个统计文件夹下面各种程序的代码的小程序,这里贴出来供大家参考 参考链接: https://gist.git ...
随机推荐
- SOA_环境安装系列5_Oracle ADF安装SOA Extensions(案例)
2015-01-02 Created By BaoXinjian
- android 中怎么保存当前按钮的状态?就是退出后重新进入还是上一次离开的状态
比如当前Activity中有一个按钮目前是开启,点击后按钮的text变成关闭!然后退出该Activtity,然后重新打开该Activity后当前按钮的状态还是关闭呢? 就是设置一个状态flag.fla ...
- Yii 框架ajax搜索分页
要想实现ajax搜索分页 其实很简单 第一步:在 Yii 框架自带的搜索和分页正常运行的情况下,在视图层
- EF下CodeFirst、DBFirst与ModelFirst分析
EF4.1有三种方式来进行数据操作及持久化.分别是Database-First,Model-First,Code-first:1.Database First是基于已存在的数据库,利用某些工具(如Vs ...
- C++学习22 多态的概念及前提条件
在<C++基类和派生类的赋值>一节中讲到,基类的指针也可以指向派生类对象.请看下面的例子: #include <iostream> using namespace std; c ...
- eclipse快捷键使用
Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率.Eclipse中有如下一些和编辑相关的快捷键.1. [ALT+/]此快捷键为用户编辑的好帮手,能为用户提供内容的 ...
- poj3253
一道赫夫曼树的经典题目,一直以为这题的代码会很复杂,没想到书中竟描述地如此简单 #include <stdio.h> int n; long long p[20010]; //一道经典的赫 ...
- [HDU 3033] I love sneakers! (动态规划分组背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3033 题意:给你K种品牌,每种品牌有不同种鞋,现在每种品牌至少挑一款鞋,问获得的最大价值,如果不能每种 ...
- [Android疑难杂症]动态改变Background后Padding无效的问题
前言 在Layout中指定好background和padding以后,程序里面动态修改background之后padding就失效了,貌似是一个BUG,这里找到了一篇英文文章,简单翻译分享一下. 声明 ...
- getdata
public partial class GetData : System.Web.UI.Page { protected void Page_Load(object sender, EventArg ...