您好,欢迎来到多米娱乐网。
搜索
您的当前位置:首页python实现统计代码行数的方法

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

来源:多米娱乐网


本文实例讲述了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程序设计有所帮助。

Copyright © 2019- dmir.cn 版权所有

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务