题目:第 0007 题: 有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。
分析: 006和007其实相似,都是对一个文件夹内的文件内容进行操作,而且操作还都是计数操作,对于这个题呢其实也很简单,对每一个py文件的每一行进行判断,只需要判断开头是不是‘\n’即可
注意:我们平时经常用的open指令’r’,'w’等文件都是对txt文件进行操作,所以我们需要对文件的打开和平时有点不一样,我们知道py文件在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。所以我们以utf8的指定编码方式打开就行喽。
上代码
# 第 0007 题: 有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。
import os
def get_all_file(path):
file_list = []
for file in os.listdir(path):
if os.path.splitext(file)[1]=='.py':
file_list.append(path +'/'+file)
print('添加',file)
return file_list
def get_rows(file):
with open(file,encoding='utf8') as f:
lines = f.readline()
rows = len(lines)
vv =0
space =0
for line in lines:
if line =='\n':
space +=1
if line[0]=="#":
vv+=1
date ={
'rows':rows,
'vv':vv,
'space':space
}
return date
def run(path):
file_list = get_all_file(path)
all_rows =0
all_vuui=0
all_space= 0
for file in file_list:
date = get_rows(file)
print("正在计算",file)
rows = date.get( 'rows')
vv = date.get('vv')
space = date.get('space')
all_rows += rows
all_space +=space
all_vuui +=vv
print('所有代码的行数:{}\n其中包括的注释行数:{}\n其中空格行数:{}'.format(all_rows, all_vuui, all_space))
if __name__ =='__main__':
path = 'C:\\Users\\wangchen\\Desktop\\python学习\\程序\\每日一题'
run(path=path)
谢谢~~