在学习python代码的过程中,有时候可以编写一些小程序练练手,今天,我就来分享一下我的几个python小程序,主要是来统计文件夹下各种类型的文件总数。
第一个,输入地址,返回目录下所有文件类型及其个数
import os
def count_type(path,type_dict):#这里将设置了两个变量,一个路径,一个字典
for root, dirs, files in os.walk(path):#用walk()函数遍历目录下所有的文件
for name in files:
type_dict.setdefault(os.path.splitext(name)[1],0) #用splitext()函数返回文件名的后缀。并且将不同类型的后缀写入字典的key,其values值就是其累计数
type_dict[os.path.splitext(name)[1]] += 1
return type_dict
#调用方法
a={}
count_type(path_1,a)
这里面"os.walk(path)“函数主要用于遍历文件目录下的所有文件,一般调用格式都是如上方的"for root, dirs, files in os.walk(path)”,其中path是遍历的路径,root、dirs、files是的含义分别如下:
- root 所指的是当前正在遍历的这个文件夹的本身的地址;
- dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录);
- files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)。
该函数的详情用法见此链接:菜鸟教程os.walk()详解
这里的"type_dict.setdefault(key, default=None)"是字典的一种用法,在字典加入新键,如果键重复,则不改变字典。如果键不重复,则加入新键key,且值为默认值None。
该函数的详情用法见此链接:菜鸟教程setdefault()函数详解
这里的“os.path.split(path)”函数,作用是分割路径,并返回路径名和文件扩展名的元组
第二个,输入要搜索文件名,返回文件所在地址
def GetFiles(path,name):#输入地址,要搜索的文件夹名,返回文件所在地址
for root,dirs,files in os.walk(path):
for name_1 in files:
if name in name_1:
print(os.path.join(root,name_1))
#用法
GetFiles(path,'python')
这里用到了字符串的一个用法“str_1 in str_2”,其含义是:如果str_2包含str_1的所有字符,则该表达式返回True,否则返回False。
这里的“os.path.join(path1,path2)”函数,作用是把目录和文件名合成一个路径。
第三,统计目录下所有子文件夹的个数,并返回文件夹名字列表
def getfiles(path,count_list):#这里设置了两个变量,一个路径,一个是列表
for root,dirs,files in os.walk(path):
for file in dirs:
count_list[0]+=1
print(os.path.join(root,file))
return count_list[0]
#用法
b=[0]#主义这里不能写成”b=[]",因为这样写在函数里直接调用b[0]会报错,因为没有b[0]
getfiles(path,b)
以上就是我写的几个python小程序,希望可以对大家有所帮助。康撒米哒~~~