python统计代码行数_python实现统计代码行数的方法

3a2c5c47719654b2eb3ed26ac95e70d8.png

本文实例讲述了python实现统计代码行数的方法。分享给大家供大家参考。具体实现方法如下:

'''

Author: liupengfei

Function: count lines of code in a folder iteratively

Shell-format: cmd [dir]

Attention: default file encode is utf8 and default file type is java-source-file. But users can customize this script by just modifing global variables.

'''

import sys

import os

import codecs

from _pyio import open

totalCount = 0;

fileType = '.java'

descLineBegin = '//'

descBlockBegin = r'/**'

descBlockEnd = r'*/'

fileEncode = 'utf-8'

def main():

DIR = os.getcwd()

if len(sys.argv) >= 2:

DIR = sys.argv[1]

if os.path.exists(DIR) and os.path.isdir(DIR):

print('target directory is %s' % DIR)

countDir(DIR)

print('total code line is %d' % totalCount)

else:

print('target should be a directory!')

def isFileType(file):

return len(fileType) + file.find(fileType) == len(file)

def countDir(DIR):

for file in os.listdir(DIR):

absPath = DIR + os.path.sep + file;

if os.path.exists(absPath):

if os.path.isdir(absPath):

countDir(absPath)

elif isFileType(absPath):

try:

countFile(absPath)

except UnicodeDecodeError:

print(

'''encode of %s is different, which

is not supported in this version!'''

)

def countFile(file):

global totalCount

localCount = 0

isInBlockNow = False

f = codecs.open(file, 'r', fileEncode);

for line in f:

if (not isInBlockNow) and line.find(descLineBegin) == 0:

pass;

elif (not isInBlockNow) and line.find(descBlockBegin) >= 0:

if line.find(descBlockBegin) > 0:

localCount += 1

isInBlockNow = True;

elif isInBlockNow and line.find(descBlockEnd) >= 0:

if line.find(descBlockEnd) + len(descBlockEnd) < len(line):

localCount += 1

isInBlockNow = False;

elif (not isInBlockNow) and len(line.replace('\\s+', '')) > 0:

localCount += 1

f.close()

totalCount += localCount

print('%s : %d' % (file, localCount))

if __name__ == '__main__':

main();

希望本文所述对大家的Python程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值