簡易統計Python有効コード行数

4107 ワード

时にはソースコードやpyファイルを见る时、有効なコードの行数がどれだけあるかを知りたいです.つまり、注釈以外のすべての行数、例えばrequestsソースコードの中で、sessions.pyファイル、注釈付きで712行(更新があるかどうか分かりません...)があります.注釈を除いて统计の行数は326行で、ほら、これは一気に半分以上少なくなって、ソースコードがもっと动力があるかどうかを见ます....(私が使用しているバージョンrequestsは注釈を除いて2146行です(使用しているpackagesのパッケージは含まれていません))
以下は私の実装コードです.参考にしてください.
# -*- coding: utf-8 -*-
# @Author: xiaodong
# @Date:   2017-12-18 18:54:56
# @Last Modified by:   xiaodong
# @Last Modified time: 2017-12-18 19:05:10

'''
    Python    
'''
def count_code_nums(file):
    """
    :param file:     ,.py  
    :rtype :int
    """
    with open(file,encoding='utf-8') as data:
        count, flag = 0, 0
        begin = ('"""', "'''")
        for line in data:
            line2 = line.strip()
            if line2.startswith('#'):continue
            elif line2.startswith(begin):
                if line2.endswith(begin) and len(line2) > 3:
                    flag = 0
                    continue
                elif flag == 0:
                    flag = 1
                else:
                    flag = 0
                    continue
            elif flag == 1 and line2.endswith(begin):
                flag = 0
                continue
            if flag == 0 and line2:
                count += 1
    return count

def detect_rows(begin=0, root='.'):
    """
              py     
    :param begin:   ,      0  
    :param root:        (   )  
    :rtype :int
    """
    import os, glob
    for file in glob.glob(os.path.join(root, '*')):
        if os.path.isdir(file):
            begin += detect_rows(0, file)
        elif file.endswith('.py'):
            begin += count_code_nums(file)
    return begin

if __name__ == '__main__':
    print (count_code_nums(__file__))
    print (detect_rows())