目录操作习题

Posted wenm1128

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目录操作习题相关的知识,希望对你有一定的参考价值。

小练习:

统计一个多级的目录下,一共多少个文件
每个文件一共有多少行,有多少空行和多少非空行。
统计一下非空行的总和是多少。
算法:
通过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))

 

以上是关于目录操作习题的主要内容,如果未能解决你的问题,请参考以下文章

Huawei_Netconf_Ncclient

PTA习题解析——目录树

求Linux操作系统练习题的答案!!!

Android 插件化VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )(代码片段

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

VSCode自定义代码片段——git命令操作一个完整流程