标签:说明 listdir def sdi line with lse encoding 技术
python编写文件统计脚本
思路:用os模块中的一些函数(os.listdir()、os.path.isdir()、os.path.join()、os.path.abspath()等)
实现功能:显示多级目录,以及自己要找的具体文件类型(例:以".py"结尾的文件),并读取每个文件的第一行(一般为注释说明,这样就能大致了解这个文件是干事什么的)
先编写二级目录文件统计脚本
代码如下:
#文件统计 os.chdir("F:\\pythonstudy") for fp in os.listdir(): if os.path.isdir(fp): print(os.path.join("f:\\pythonstudy",fp)) for f in os.listdir(fp): if f.endswith(".py"): print("\t",os.path.abspath(f)) #打印f的绝对路径 with open(fp+"\\"+f,encoding="utf-8") as f1: print("\t",f1.readline()) #读取第一行
运行效果如下:
如何实现多级目录中文件的统计呢,这里用函数的递归调用方式来实现
代码如下:
#文件统计 def sfile(dir,layer=1): print(" "*(layer-1)+dir) for fp in os.listdir(dir): nf=os.path.join(dir,fp) if os.path.isdir(nf): sfile(nf,layer+1) else: if nf.endswith(".py"): #统计以".py"结尾的文件 print(" "*layer+nf,end="\t"*(5-layer)) #layer是为了美观,对整齐
layer是
为了美观,layer是 with open(nf,encoding="utf-8") as f1: print(f1.readline().strip()) sfile("f:\\sss")
运行效果如下:
上图可以看到实现了多级目录中统计".py"结尾的文件,并打印出每个文件的第一行。
如果想统计图片只需要简单的修改就好
def sfile(dir,layer=1): print(" "*(layer-1)+dir) for fp in os.listdir(dir): nf=os.path.join(dir,fp) if os.path.isdir(nf): sfile(nf,layer+1) else: if nf.endswith(".jpg"): print(" "*layer+nf,end="\t"*(5-layer)) sfile("f:\\sss")
运行效果如下:
注:想统计整个盘符下的某种文件类型,命令提示符(cmd)需要管理员权限,不然会提示拒绝访问
!!!!未解决问题:如何实现统计"F盘"中所有的jpg文件,但不显示(打印)目录中没有jpg文件的路径,只显示目录中有jpg文件的路径
本人脑袋要爆炸了,实在想不出,有想法的博友,给点意见
标签:说明 listdir def sdi line with lse encoding 技术
原文地址:https://www.cnblogs.com/yuzly/p/10318993.html