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))
  • 相关阅读:
    如何优化数据库中数据的查询
    2句sql语句的比较
    未来五年程序员应当具备的十项技能
    中小IT企业如何留住80后技术人才
    ORACLE的sign函数和DECODE函数
    Windows Server 2008系统 安装Oracle 10g 错误
    ORACLE 错误 ora01830 解决方法
    oracle instr函数
    Oracle 9i安装时没有找到OCS4J.properties 解决办法
    C# 中的委托和事件
  • 原文地址:https://www.cnblogs.com/wenm1128/p/11644903.html
Copyright © 2011-2022 走看看