Python 练习册——第0007题
题目:有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。
代码实现
"""
@ 代码行数统计
"""
import os
import numpy as np
import pandas as pd
# 过滤文件夹中的非python文件
path = r"C:\Users\阮一新\Desktop\Python面向对象"
python_files = filter(lambda f:f if f[-3:]==".py" else None,os.listdir(path))
# 使用numpy创建存储结果的数组
python_files = list(python_files)
result_array = np.empty((len(python_files),5),dtype=np.uint8)
for index,f in enumerate(python_files):
with open(os.path.join(path,f),"r",encoding="utf-8") as f1:
lines = f1.readlines()
total = len(lines)
void = 0
multi = 0
single = 0
code = 0
isMultiIng = False
for line in lines:
if line == "\n" and isMultiIng == False:
void += 1
elif line.strip().startswith("#") and isMultiIng == False:
single += 1
elif line.strip().startswith('"""') and isMultiIng == False:
multi += 1
isMultiIng = True
elif line.strip().startswith('"""') and isMultiIng == True:
multi += 1
isMultiIng = False
elif isMultiIng == True:
multi += 1
else:
code += 1
# pd.Series(np.array([total,code,single,multi,void]),Index=["Total","Code","Single","Multiple","Void"])
result_array[index] = np.array([total,code,single,multi,void])
result_df = pd.DataFrame(result_array,columns=["Total","Code","Single","Multiple","Void"],index=python_files)
result_df
Total | Code | Single | Multiple | Void | |
---|---|---|---|---|---|
enumerate.py | 8 | 6 | 0 | 0 | 2 |
moudle1.py | 21 | 3 | 0 | 13 | 5 |
moudle2.py | 17 | 10 | 0 | 0 | 7 |
mro.py | 42 | 23 | 0 | 7 | 12 |
peoperty装饰器使用.py | 44 | 30 | 0 | 9 | 5 |
property的装饰器写法.py | 32 | 17 | 6 | 3 | 6 |
property装饰器.py | 29 | 19 | 0 | 5 | 5 |
super的用法.py | 35 | 26 | 2 | 0 | 7 |
yield.py | 7 | 4 | 0 | 0 | 3 |
zip.py | 17 | 12 | 0 | 0 | 5 |
多重继承测试.py | 65 | 23 | 17 | 0 | 25 |
实例属性与父类变量.py | 28 | 19 | 0 | 0 | 9 |
实例方法,类方法与静态方法.py | 43 | 30 | 1 | 3 | 9 |
属性描述器.py | 29 | 15 | 0 | 4 | 10 |
类属性与实例属性.py | 35 | 21 | 0 | 7 | 7 |
类属性与类方法测试.py | 53 | 10 | 10 | 26 | 7 |
类的继承测试.py | 58 | 29 | 1 | 14 | 14 |
装饰器模式.py | 41 | 16 | 9 | 5 | 11 |
观察者模式.py | 53 | 33 | 0 | 5 | 15 |