python脚本:计算某个目录下Code行数

简介

用python脚本,计算给定目录下的,所有C/C++代码的行数。
运行平台:CentOS 6.3

代码

#! /usr/bin/python

'''
     File    : CodeLine.py
     Author  : HCLAC
     E-Mail  : hclac@sina.com
'''

import sys, os

# global variable
extens  = [".c", ".cpp", ".hpp", ".h"]
linesCount = 0
filesCount = 0

def funCount(dirName):
    global extens, linesCount, filesCount
    for root, dirs, fileNames in os.walk(dirName):
        for f in fileNames:
            fname = os.path.join(root, f)
            try :
                ext = f[f.rindex('.'):]
                if(extens.count(ext) > 0):
                    print 'support'
                    filesCount += 1
                    print fname
                    l_count = len(open(fname).readlines())
                    print fname,": ",l_count
                    linesCount += l_count
                else:
                    print ext, ":not support"
            except:
                print "Error occur!!!"
                pass

#main
if len(sys.argv)> 1:
    for m_dir in sys.argv[1:]:
        print m_dir
        funCount(m_dir)
else :
        funCount("./")

print "files count: ", filesCount
print "lines count: ", linesCount

raw_input("Press Enter to continue")

运行结果

运行结果

变量说明

  1. 普通变量
    linesCount = 0:直接定义,不用写类型名称,python自动识别是字符、字符串、整数、浮点数。
  2. 数组
    extens = [“.c”, “.cpp”, “.hpp”, “.h”]:定义字符串数组,数组名称为extens,数据定义在[]之间,用”“包含每个数据,用”,”分割数据。
    对数组的操作:
    • extens[-1]:数组的负索引,表示.h
    • extens[1:3]:对数组分片,显示.cpp .hpp,不包含第4个元素
    • extens.append(“.py”):从后面添加新数据。
    • extens.insert(2, “.py”):在第二个数据之后添加新数据。
    • extens.extend([“.py”, “.o”, “.a”]):从后面添加多个新数据。
    • extens.index(“.h”):在数组中搜索元素。
    • “.h” in extens:判断是否在数组中,是返回True
    • extens.remove(“.h”):删除元素。
    • extens.pop():从后面删除一个元素。
    • extens+=”.txt”:从后面添加新元素。

代码说明

主要思路:
从当前目录遍历所有文件夹,找到后缀是.h,.hpp,.c,.cpp的文件,打开文件,获取行数,加起来就是总行数。
- for root, dirs, fileNames in os.walk(dirName):使用os.walk函数,遍历dirName的目录下的所有文件夹和文件,分别保存在dirs和fileNames变量中,这两个变量都是list类型的,root保存着当前目录的路径。
- for f in fileNames:遍历fileNames列表,将文件名称保存在f变量中。
os.path.join(first, second):将first的字符串和second的字符串串联起来,返回给另外一个变量
- l_count = len(open(fname).readlines()):使用open函数打开文件,readlines()函数获取文件代码行列表,len()获取列表的个数。

注意

for,if,else,def等关键字后记得添加冒号:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值