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(" ",os.path.abspath(f)) #打印f的绝对路径
with open(fp+"\"+f,encoding="utf-8") as f1:
print(" ",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=" "*(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=" "*(5-layer))
sfile("f:\sss")
运行效果如下:
注:想统计整个盘符下的某种文件类型,命令提示符(cmd)需要管理员权限,不然会提示拒绝访问
!!!!未解决问题:如何实现统计"F盘"中所有的jpg文件,但不显示(打印)目录中没有jpg文件的路径,只显示目录中有jpg文件的路径
本人脑袋要爆炸了,实在想不出,有想法的博友,给点意见