专栏首页菲宇使用Python统计文件下代码行数

使用Python统计文件下代码行数

#/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Wangj
import os
import time
basedir = 'H:/python/MultiQC/'
filelists = []
# 指定想要统计的文件类型
whitelist = ['php', 'py']
#遍历文件, 递归遍历文件夹中的所有
def getFile(basedir):
    global filelists
    for parent,dirnames,filenames in os.walk(basedir):
        #for dirname in dirnames:
        #    getFile(os.path.join(parent,dirname)) #递归
        for filename in filenames:
            ext = filename.split('.')[-1]
            #只统计指定的文件类型,略过一些log和cache文件
            if ext in whitelist:
                filelists.append(os.path.join(parent,filename))
#统计一个文件的行数
def countLine(fname):
    count = 0
    for file_line in open(fname).xreadlines():
        if file_line != '' and file_line != '\n': #过滤掉空行
            count += 1
    print (fname + '----' , count)
    return count
if __name__ == '__main__' :
    startTime = time.clock()
    getFile(basedir)
    totalline = 0
    for filelist in filelists:
        totalline = totalline + countLine(filelist)
    print ('total lines:',totalline)
    print ('Done! Cost Time: %0.2f second' % (time.clock() - startTime))

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • centos使用yum时报 Error: rpmdb open failed的解决办法

    菲宇
  • Kunbernetes-基于NFS的存储

    NFS是Network File System的简写,即网络文件系统,NFS是FreeBSD支持的文件系统中的一种。NFS基于RPC(Remote Proced...

    菲宇
  • nginx + gunicorn + supervisor + flask 部署笔记

    web开发中,各种语言争奇斗艳,web的部署方面,却没有太多的方式。简单而已,大概都是 nginx 做前端代理,中间 webservice 调用程序脚本。大概方...

    菲宇
  • MySQL性能扩展的架构优化方案(二)

    原来的主库读写压力都很大,最后做了读写分离,读节点的压力开始激增,而且随着业务的扩展,统计查询的需求越来越多,比如原来是有10个查询,现在可能变成了30个,这样...

    jeanron100
  • RPM软件包管理机制之旅

        Linux下的man命令十分实用,可以查看Linux命令的手册。但这些手册只适用于忘记命令的选项时查询之用,如果用来学习Linux下类似于Git, RP...

    用户1214695
  • 物联网火爆背后隐藏的巨大安全风险

    伴随着越来越多的美国家庭、企业和政府推进、购买和部署智能设备,而这些价格相对低廉的物联网设备引发了新的安全问题。目前物联网设备规模突破百亿,在营造更舒适、更高效...

    周俊辉
  • 【leetcode刷题】T190-阶乘后的零

    https://leetcode-cn.com/problems/factorial-trailing-zeroes

    木又AI帮
  • 理解Java并发工具类CyclicBarrier

    CyclicBarrier这个并发工具类和上篇文章中提到的CountDownLatch比较类似,可以把CyclicBarrier看做是可以可以复用的CountD...

    我是攻城师
  • MySQL自增长属性中的锁

    我们在设计表结构的时候,经常会对某一列设置自增长的值,它的作用是可以帮助我们自动递增某一列的值,自增长的属性经常被设置在主键列上,原因是主键必须具有唯一...

    AsiaYe
  • 200 道算法面试题集锦!Python 实现,含华为、BAT 等校招真题!

    春招临近,无论是要找工作的准毕业生,还是身在职场想要提升自己的程序员,提升自己的算法内功心法、提升 Python 编程能力,总是大有裨益的。今天,红色石头发现了...

    用户2769421

扫码关注云+社区

领取腾讯云代金券