文档章节

使用Python简单快速实现统计代码行数

t
 terry_love_c
发布于 2015/11/16 16:59
字数 583
阅读 52
收藏 0

1.程序简介

    这个程序使用来统计文件夹中的所有文件中非空行的行数。代码比较简单易懂,使用递归的方式进行文件夹中所有文件的获取。

2.效果图

图2-1


    图2-1 为要测试文件夹的内容,下面来运行一下程序

图2-2

    运行程序之后返回文件名和对应的行号,并返回所有文件的总行号,和文件总数量。

3.程序代码

#!-*-coding:utf-8-*-
#author:Terry Lee
#date:2015/11/16 
#
#description:this script is used to exec omret coding lines.
#usage:first param is dir path
#      second param is exclude files array

import os

TOTAL = 0 #total line number
FILENUM = 0 #total file number

class execLine(object):

    #----get all files path under the specified dir-----
    def run(self,dirPath,excludeFiles):
        for fileordir in os.listdir(dirPath):        
            path = os.path.join(dirPath,fileordir)
            if os.path.isfile(path):

                #----exclude the specified files------
                for excludeFile in excludeFiles:
                    if fileordir != excludeFile:
                        line = self.execFileLines(path)
                        global TOTAL
                        TOTAL += line
                        global FILENUM
                        FILENUM += 1
                        print str(FILENUM)+': [filename] '+fileordir+(' '*(50-len(fileordir)))+'[line] '+str(line)
                        
            elif os.path.isdir(path):
                #----if file is dir,use recursion----
                self.run(path,excludeFiles)
    
    #----exec the lines of file,execpt blank line----            
    def execFileLines(self,filepath):
        line = len([ln for ln in open(filepath, 'rt') if ln.strip()])
        return line

    def showTotal(self):
        print "\ntotal file number: "+str(FILENUM)+"\ntotal lines: "+str(TOTAL)
    
execLine = execLine()
execLine.run('C:\\Users\\zhoufm\\Desktop\\test',[''])
execLine.showTotal()

    代码的话我就不多做解释了,相信小伙伴们都能看的懂的,有疑问或者改进的建议也可以评论我。

    在脚本的最后调用run方法进行统计。第一个参数为文件夹路径,就是要统计的项目的文件夹,第二个参数是需要过滤掉的文件名,你们当然不希望把框架自动生成的文件还有一些图片啊什么的都统计进去吧。:)

    测试一下过滤功能,修改下面的代码

execLine.run('C:\\Users\\zhoufm\\Desktop\\test',['1.txt'])

    可以发现<1.txt>这个文件被过滤掉了,最后笔者在print文件名和行号的时候加了一个小trick,使得输出看起来比较舒服,我们换一个内容多一些的文件夹试一下。

    这样看起来就比较轻松啦。

© 著作权归作者所有

共有 人打赏支持
t
粉丝 1
博文 1
码字总数 583
作品 0
常熟
私信 提问
【Spark】Spark Quick Start(快速入门翻译)

本文主要是翻译Spark官网Quick Start。只能保证大概意思,尽量保证细节。英文水平有限,如果有错误的地方请指正,轻喷 目录导航在右上角,感谢两个大佬(孤傲苍狼 JavaScript自动生成博文目录...

跑呀跑
2018/09/16
0
0
如何用 Python 编写你喜爱的 R 函数

R 还是 Python ? Python 脚本模仿易使用的 R 风格函数,使得数据统计变得简单易行。 “Python vs. R” 是数据科学和机器学习的现代战争之一。毫无疑问,近年来这两者发展迅猛,成为数据科学、...

作者: Tirthajyoti Sarkar
2018/12/05
0
0
关于OpenERP的一些技术数字

转载自 http://www.osbzr.com/336 ohloh.net 是个好网站,上面有很多开源项目的统计信息。 关于OpenERP,它记录了以下有趣的数字。 代码成熟,管理规范 OpenERP的第一行代码在2006年提交。虽...

WangJeff
2013/04/13
880
3
用 Python 替代 Bash 脚本

对于Linux用户来说,命令行的名声相当的高。不像其他操作系统,命令行是一个可怕的命题,但是对于Linux社区中那些经验丰富的大牛,命令行却是最值得推荐鼓励使用的。通常,命令行对比图形用户...

葱油拌面
2013/04/10
9.3K
2
使用Mahout搭建推荐系统之入门篇2-玩转你的数据1

用意: 搞推荐系统或者数据挖掘的, 对数据要绝对的敏感和熟悉, 并且热爱你的数据. 分析数据既要用统计分析那一套,又要熟悉业务发掘有趣的特征(feature). 后者有意思的多,但是因为我业务做的不...

清风漫步
2013/11/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

关于C++ 容器的swap操作

一、swap操作交换两个相同类型的容器的内容,一般的容器(除array外),交换两个容器内容的操作会保证非常快,因为并没有交换元素本身,而只是交换了两个容器的内部数据结构。 拿vector做个例...

shzwork
11分钟前
0
0
程序员从宏观、微观角度浅析JVM虚拟机!

1.问题 1、JAVA文本文件如何被翻译成CLASS二进制文件? 2、如何理解CLASS文件的组成结构? 3、虚拟机如何加载使用类文件的生命周期? 4、虚拟机系列诊断工具如何使用? 5、虚拟机内存淘汰机制?...

我最喜欢三大框架
12分钟前
0
0
Choerodon猪齿鱼实践之应用生命周期管理

Choerodon平台中的开发和部署都是围绕应用来进行的,那Choerodon平台中的应用有什么样的特性?又是怎样来进行管理的呢?本文旨在深入地介绍Choerodon平台中应用的功能特性及其生命周期的管理...

Choerodon
32分钟前
0
0
Websocket之Jmeter压力测试

最近使用到Websocket进行聊天功能开发,用Jmeter进行压力测试,记录下。 使用的Jmeter版本5.1.1,自行从apache jmeter官网下载。 首先要添加Websocket的插件,网上有很多,我从百度网盘下载的...

克虏伯
32分钟前
0
0
作为Java程序员这些技术都不会,拿什么去涨薪跳槽?

引言 当下,正面临着近几年来的最严重的互联网寒冬,听得最多的一句话便是:相见于江湖~,缩减HC、裁员不绝于耳,大家都是人心惶惶,年前如此,年后想必肯定又是一场更为惨烈的江湖厮杀。但博...

别打我会飞
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部