python 구현 코드 행수 통계
3403 단어 코드 통계
import os
def static(path = '.'):
if os.path.isdir(path):
for x in os.listdir(path):
childdir = os.path.join(path, x)
if os.path.isdir(childdir):
static(childdir)
elif os.path.isfile(childdir):
clacFilelines(childdir)
elif os.path.isfile(path):
clacFilelines(path)
return
두 번째 단계: 파일 줄 수 계산 함수 기능을 실현하고 텍스트 파일 줄 수를 통계하며 공백 줄 (코드 주석은 일시적으로 처리하지 않는 경우가 많음) 을 필터하고 통계 결과를 파일 확장자를 키로 하는 사전result에 저장합니다.
def clacFilelines(filepath):
vpath = os.path.splitext(filepath)
ext = vpath[1].lower()
if not ext.strip():
return False
if not isTextFile(ext):
return False
lines = 0
with open(filepath, 'rU') as f:
filelist = f.readlines()
for line in filelist:
if not line.strip():
continue
lines += 1
if ext in result:
result[ext] += lines
else:
result[ext] = lines
print 'file:%s lines:%d' %(filepath, lines)
return True
세 번째 단계: 텍스트 파일과 바이너리 파일로 나뉘기 때문에 기호가 필요하지 않은 파일은 계산되지 않습니다.다음은 간단한 구현 방법입니다.
def isTextFile(ext):
tExt = ('.c', '.cpp', '.h', '.py', '.htm', '.html', '.txt', '.lua', '.ini', '.hpp', '.lua', '.cfg')
if ext in tExt:
return True
return False
상기 세 가지 절차를 완성하고 간단한 코드 통계 도구가 실현되었다. 전체 코드는 다음과 같다.
#!/usr/bin/python
#-*- coding: utf-8 -*-
import os
result = {}
def static(path = '.'):
if os.path.isdir(path):
for x in os.listdir(path):
childdir = os.path.join(path, x)
if os.path.isdir(childdir):
static(childdir)
elif os.path.isfile(childdir):
clacFilelines(childdir)
elif os.path.isfile(path):
clacFilelines(path)
return
def clacFilelines(filepath):
vpath = os.path.splitext(filepath)
ext = vpath[1].lower()
if not ext.strip():
return False
if not isTextFile(ext):
return False
lines = 0
with open(filepath, 'rU') as f:
filelist = f.readlines()
for line in filelist:
if not line.strip():
continue
lines += 1
if ext in result:
result[ext] += lines
else:
result[ext] = lines
print 'file:%s lines:%d' %(filepath, lines)
return True
def isTextFile(ext):
tExt = ('.c', '.cpp', '.h', '.py', '.htm', '.html', '.txt', '.lua', '.ini', '.hpp', '.lua', '.cfg')
if ext in tExt:
return True
return False
if __name__ == '__main__':
print '***********start code line static*************'
static()
print '****************static result*****************'
sum = 0
for k,v in result.iteritems():
sum += v
print '[%s]: %d lines' %(k, v)
print 'total: %d lines' %sum
print '******************static end******************'
실행 결과:
***********start code line static*************
file:.\class.py lines:118
file:.\hello.py lines:483
file:.\metaclass.py lines:72
file:.\process.py lines:28
file:.\static_code_line.py lines:50
****************static result*****************
[.py]: 751 lines
total: 751 lines
******************static end******************
[Finished in 0.4s]
앞뒤로 모두 15min 정도 걸려서 이 작은 프로그램을 완성했는데 갑자기python을 좋아하게 되었다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 구현 코드 통계 애플 릿본 논문 의 사례 는 자바 코드 통계 애플 릿 을 공유 하여 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다. 매주 당신 의 업 무량 을 측정 할 수 있 습 니 다. 이상 이 바로 본 고의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.