python3 实现统计代码行数,简单高效
标签: python
python3 实现统计代码行数,简单高效
需求背景
需求:统计指定目录下python文件的个数,代码行数,空行数,注释行数。包括子文件夹下的内容。
工具
- python 3.8.5
- PyCharm
python源码
import os
def count_codelines(dir_path): #定义统计代码行的函数
file_num = 0 #声明变量分别存储文件个数、
all_line_num = 0 #代码总行数、
empty_line_num = 0 #空行数、
comment_line_num = 0 #注释行数
for root, dirs, files in os.walk(dir_path): #遍历整个目录
for file_name in files: #获取每个文件的文件名
file_path = os.path.join(root, file_name) #拼接目录名和文件名为一个绝对路径
if file_path[-3:] == ".py": #判断是否为python代码文件
file_num += 1 #统计文件个数
with open(file_path, 'r', encoding="utf-8") as fp: #with语句读文件会自动调用close()方法,防止文件对象占用系统资源
for line in fp:
all_line_num += 1 #统计所有的行数
if line.strip() == "":
empty_line_num += 1 #统计空行数
if line[0] == "#":
comment_line_num += 1 #统计注释行数
return (file_num,all_line_num,empty_line_num,comment_line_num)
if __name__ == "__main__":
codelines = count_codelines("C:/Users/admin/PycharmProjects/pythonProject")
print("文件个数:",codelines[0],
"代码总行数:",codelines[1],
"空行数:",codelines[2],
"注释行数:",codelines[3])
知识点总结
- os.walk() 方法是个文件、目录遍历器
- os.walk() 方法会返回三个参数:top, dirs, nondirs(传入的根目录,根目录下的文件夹,根目录下的文件)
os.path.join(root, file_name)
方法将目录名和文件名,拼成一个绝对路径file_path[-3:] == ".py"
用切片判断文件是否为python代码文件with open(file_path, 'r', encoding="utf-8") as fp
: with语句读文件会自动调用close()方法,防止文件对象过度占用系统资源- Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)
每天积累一小点。
–该图片来源网络,如有侵权,请告知删除。
版权声明:本文为weixin_42866036原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。