Python은 코드 줄 계산 도구를 구현합니다.

高洛峰
풀어 주다: 2016-10-17 11:35:53
원래의
1320명이 탐색했습니다.

우리는 종종 프로젝트의 코드 줄 수를 세고 싶지만, 보다 완전한 통계 기능을 원한다면 그렇게 간단하지 않을 수 있습니다. 오늘은 Python을 사용하여 구현하는 방법을 살펴보겠습니다. 코드 계산 도구 한 줄.

아이디어: 먼저 모든 파일을 가져온 다음 각 파일의 코드 줄 수를 계산하고 마지막으로 줄 수를 더합니다.

구현된 기능:

각각 계산 파일의 줄 수는

의 총 줄 수를 계산합니다.

은 통계 파일 형식 지정을 지원하고 그렇지 않은 파일 형식은 제외합니다.

하위 파일을 포함하여 폴더 아래의 파일 줄 수를 반복적으로 계산합니다.

빈 줄 제외

결과:
# coding=utf-8
import os
import time
basedir = '/root/script'
filelists = []
# 指定想要统计的文件类型
whitelist = ['php', 'py']
#遍历文件, 递归遍历文件夹中的所有
def getFile(basedir):
    global filelists
    for parent,dirnames,filenames in os.walk(basedir):
        #for dirname in dirnames:
        #    getFile(os.path.join(parent,dirname)) #递归
        for filename in filenames:
            ext = filename.split('.')[-1]
            #只统计指定的文件类型,略过一些log和cache文件
            if ext in whitelist:
                filelists.append(os.path.join(parent,filename))
#统计一个文件的行数
def countLine(fname):
    count = 0
    for file_line in open(fname).xreadlines():
        if file_line != '' and file_line != '\n': #过滤掉空行
            count += 1
    print fname + '----' , count
    return count
if __name__ == '__main__' :
    startTime = time.clock()
    getFile(basedir)
    totalline = 0
    for filelist in filelists:
        totalline = totalline + countLine(filelist)
    print 'total lines:',totalline
    print 'Done! Cost Time: %0.2f second' % (time.clock() - startTime)
로그인 후 복사

은 PHP와 Python 파일만 계산하므로 매우 편리합니다.
[root@pythontab script]# python countCodeLine.py 
/root/script/test/gametest.php---- 16
/root/script/smtp.php---- 284
/root/script/gametest.php---- 16
/root/script/countCodeLine.py---- 33
/root/script/sendmail.php---- 17
/root/script/test/gametest.php---- 16
total lines: 382
Done! Cost Time: 0.00 second
[root@pythontab script]#
로그인 후 복사

실제로 이를 기반으로 주석줄을 제외하는 등의 개선도 가능합니다.

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿