zoukankan      html  css  js  c++  java
  • 目录操作习题

    小练习:

    统计一个多级的目录下,一共多少个文件
    每个文件一共有多少行,有多少空行和多少非空行。
    统计一下非空行的总和是多少。
    算法:
    通过os.walk可以找到一个目录下的所有文件的绝对路径
    打开每一个文件,执行代码统计相关的函数count_code_line
    这个函数可以统计文件中的总行数、空白行数、注释行数和代码行数
    最后格式化输出
    import os
    import os.path
    
    def count_lines(fp):
        line_number = 0
        blank_line_number = 0
        code_line_number =0
        comment_number = 0
        try:
            for line in fp:
                line_number+=1
                if line.strip()=="":
                    blank_line_number+=1
                    continue
                elif line.strip().startswith("#"):
                    comment_number+=1
                else:
                    code_line_number+=1 
            return line_number,blank_line_number,comment_number,code_line_number
        except:
            print("统计文件%s代码时候出错" %fp.name)
    
    def count_code_line(file_path):
        if not os.path.exists(file_path):
            print("文件的路径不存在,请重新输入!")
            return None
        line_number = 0
        blank_line_number = 0
        code_line_number =0
        comment_number = 0
        try:
            fp = open(file_path,"r",encoding="gbk")
            return count_lines(fp)
        except:
            fp = open(file_path,"r",encoding="utf-8")
            return count_lines(fp)
    
    #print(count_code_line("e:\a.txt"))
    
    line_number = 0
    blank_line_number = 0
    code_line_number =0
    comment_number = 0
    for root, dirs, files in os.walk("e:\test",topdown=False) :
        print(u"当前目录:",root) #打印目录绝对路径
        for name in files :
            print(u'文件名:',os.path.join(root,name) )#打印文件绝对路径
            file_path = os.path.join(root,name)
            count_result = count_code_line(file_path)
            line_number += count_result[0]
            blank_line_number += count_result[1]
            code_line_number +=count_result[2]
            comment_number += count_result[3]
    
    
    print("""
    总行数:%s
    空白行数:%s
    注释行数:%s
    有效代码行数:%s
    """  %(line_number,blank_line_number,code_line_number,
    comment_number))
  • 相关阅读:
    CAP
    plugins for ST3 to frontend
    OAuth 2.0 详解
    Git SSH生成
    Android FrameWork 学习之Android 系统源码调试
    node.js安装步骤
    数据结构-- 队列 循环与顺序
    jsp之认识 servlet (基础、工作原理、容器请求处理)
    android 蓝牙开发---与蓝牙模块进行通讯 基于eclipse项目
    Android 仿微信调用第三方应用导航(百度,高德、腾讯)
  • 原文地址:https://www.cnblogs.com/wenm1128/p/11644903.html
Copyright © 2011-2022 走看看