本文实例讲述了python实现统计代码行数的方法。分享给大家供大家参考。具体实现方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
''' 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程序设计有所帮助。