python 구현 코드 행수 통계

3403 단어 코드 통계
첫 번째 단계: static 통계 함수를 정의해야 합니다. 함수가 지정한 경로에 접근할 수 있도록 해야 합니다. 디렉터리에 귀속적으로 접근할 수 있다면, 파일이라면 파일에 대해 행수를 계산해야 합니다.
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을 좋아하게 되었다.

좋은 웹페이지 즐겨찾기