python--代码统计(进阶版)
在上一篇的随笔中发表了代码统计小程序,但是发表后,我发现,以前写的代码怎么办
写了那么多,怎么就从0开始了呢,,,,我还是个孩子啊,不能这么残忍
于是,代码统计进阶版:统计当前目录下所有指定文件类型的行数
1 #coding:gbk 2 import os 3 import time 4 from CountItem.FindCode import * 5 6 n = 0 7 '''查找历史记录的行数''' 8 try: 9 with open('TotalLines','r') as p: 10 lastline = '' 11 for lastline in p.readlines(): 12 pass 13 index = lastline.find('>>') 14 n = int(lastline[index+2:]) 15 except ValueError as e: 16 n = 0 17 except FileNotFoundError: 18 n = 0 19 '''文件列表''' 20 fileList = FindCode().getLocalfile(os.getcwd()) 21 '''计算行数''' 22 for filename in fileList: 23 try: 24 with open(filename,'r') as f: 25 try: 26 lines = f.readlines() 27 except UnicodeDecodeError: 28 '''编码错误,不用管,我们要的是行数''' 29 '''嗯,,掩耳盗铃''' 30 pass 31 for s in lines: 32 '''不计入空行''' 33 if s == '\n': 34 continue 35 n += 1 36 except FileNotFoundError as e: 37 print('文件名或文件路径错误,没有该文件!') 38 os.system('pause') 39 os._exit(1) 40 except OSError as e: 41 print('文件名不合法') 42 os.system('pause') 43 os._exit(1) 44 45 print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) + '代码行数>>' + str(n) + '\n') 46 47 '''写入文件''' 48 with open('TotalLines','a') as f: 49 f.write(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) + '代码行数>>' + str(n) + '\n') 50 os.system('pause')
1 #coding:gbk 2 import os 3 class FindCode(): 4 '''初始化查找的文件类型列表''' 5 def __init__(self): 6 self.targetFile = [] 7 self.targetFile.append('c') 8 self.targetFile.append('cpp') 9 self.targetFile.append('py') 10 self.targetFile.append('java') 11 '''递归查找文件,用绝对路径''' 12 def getLocalfile(self,findpath): 13 fileList = os.listdir(findpath) 14 aimsList = [] 15 for filepath in fileList: 16 filepath = findpath + '\\' + filepath 17 if os.path.isdir(filepath): 18 aimsList.extend(self.getLocalfile(filepath)) 19 else: 20 if self.selectFile(filepath): 21 aimsList.append(filepath) 22 return aimsList 23 24 def selectFile(self,filepath): 25 index = filepath.find('.') 26 lastname = filepath[index+1:] 27 return True if lastname in self.targetFile else False 28 29 if __name__ == '__main__': 30 Demo = FindCode() 31 print('\n'.join(x for x in Demo.getLocalfile(os.getcwd()))) 32
但是,不能统计一次挪一次窝吧,再改!
1 '''文件列表''' 2 filepath = input('请输入指定文件路径(绝对路径):') 3 if os.path.isdir(filepath): 4 fileList = FindCode().getLocalfile(filepath)
这个就对了,很爽,,,