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