Python--文件操作3 --小案例

案例:
1.打印某个文件夹中所有文件的名字(递归)
2.统计某个文件夹中所有.py文件中代码的行数
    1.找到某个文件夹中所有的.py文件
 1 import os
 2 # 展示文件夹内所有.py子文件的名字
 3 def showsubfiles(dirname):
 4     # 获取文件夹dirname中所有的子文件(子文件包括文件以及文件夹)
 5     filelist = os.listdir(dirname)
 6     for name in filelist:
 7         print(name)
 8         # os.path.isdir(name) 判断name是否为文件夹,如果是:返回True,否则返回False
 9         if os.path.isdir(name):
10             #如果name为文件夹,递归调用自己
11             print(name)
12             showsubfiles(name)
13         # 否则为文件,判断是否为.py文件
14         else:
15             # 说名name为文件,判断name的后缀是否为.py
16             if name.endswith('.py'):
17                 # 打印.py文件名
18                 print(name)
19 
20 showsubfiles("路径")
    2.统计某个文件夹中所有.py文件中代码的行数
  
import os
# 统计问价filename中代码的行数
def getlines(filename):
    # 存储代码行数
    count = 0
    # 打开文件
    f = open(filename,'r',encoding='utf-8')
    # 逐行读取
    content = f.readline()
    while content != "":
        # 计数加1
        count += 1
    # 计数(考虑注释问题)
        content = f.readline()
    # 关闭文件
    f.close()
    # 返回当前文件代码的行数
    return count
totalcount = 0

# 展示文件夹内所有.py子文件的名字
def showsubfiles(dirname):
    # 获取文件夹dirname中所有的子文件(子文件包括文件以及文件夹)
    filelist = os.listdir(dirname)
    for name in filelist:
        newpath = dirname
        # os.path.isdir(name) 判断name是否为文件夹,如果是:返回True,否则返回False
        if '.' not in name:
            #如果name为文件夹,递归调用自己   name为当前文件夹,如果要递归,需要用之前的路径+"/"+当前文件夹的名字
            newpath = dirname+"/"+name
            showsubfiles(newpath)
        # 否则为文件,判断是否为.py文件
        else:
            # 说名name为文件,判断name的后缀是否为.py
            if name.endswith('.py'):
                # 打印.py文件名
                newname = newpath+"/"+name
                singlecount = getlines(newname)
                # 全局变量的使用方式
                global totalcount
                # 将数量加入到总数量中
                totalcount += singlecount

showsubfiles("路径")
print("总行数:%d"%totalcount)

                             2018-04-01  21:08:55    

posted @ 2018-04-01 21:09  TiAmo_yu  阅读(313)  评论(0编辑  收藏  举报