• python练习册 每天一个小程序 第0007题


     1 # -*-coding:utf-8-*-
     2 __author__ = 'Deen'
     3 '''
     4 题目描述:
     5     有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。
     6 
     7     根据注释和正常语句的区别,进行筛选计数
     8 '''
     9 
    10 import os
    11 
    12 
    13 # 首先还是获取该目录下所有文件名,返回一个list进行储存
    14 def list_files(dir, wirldcard, recursion):
    15     files_text = list()
    16     exts = wirldcard.split(" ")
    17     files = os.listdir(dir)
    18     for name in files:
    19         fullname = os.path.join(dir, name)
    20         if (os.path.isdir(fullname) & recursion):
    21             list_files(fullname, wirldcard, recursion)
    22         else:
    23             for ext in exts:
    24                 if (name.endswith(ext)):
    25                     files_text.append(fullname)
    26                     break
    27     # print files_text
    28     return files_text
    29 
    30 
    31 def count(file):
    32     blank_num = 0
    33     code_num = 0
    34     annotations_num = 0
    35     line_num = 0
    36     annotations_nums = list()
    37     with open(file) as fp:
    38         for line in fp.readlines():
    39             line_num += 1
    40             line = line.strip('
    ')
    41             if '#' in line:
    42                 annotations_num += 1
    43             if "'''" in line:
    44                 annotations_nums.append(line_num)
    45             elif len(line) > 0:
    46                 code_num += 1
    47             else:
    48                 blank_num += 1
    49 
    50         fp.close()
    51 
    52     j = 0
    53     result = 0
    54     for i in annotations_nums:
    55         j += 1
    56         if j % 2 == 0:
    57             result += int(i) - annotations_nums[j - 2]
    58     return code_num, annotations_num + result + 1, blank_num
    59 
    60 
    61 if __name__ == '__main__':
    62     files = list_files('G://code')
    63     for file in files:
    64         count_result = count(file)
    65         dic = dict(zip(['code_num', 'annotations_num', 'blank_num'], list(count_result)))
    66         print dic
  • 相关阅读:
    JS浮点数的加减乘除运算
    鼓励心里的阳光
    mysql创建新用户并分配数据库权限
    CentOS下的Memcache安装步骤(Linux+Nginx+PHP+Memcached)
    Python发送邮件
    SQL操作语句
    Mysql数据库操作语句
    Cookie,Session的区别
    Jmeter性能测试-分布式压力测试
    性能测试指标
  • 原文地址:https://www.cnblogs.com/deen-/p/7159120.html
Copyright © 2020-2023  润新知