如何用python统计一个路径下的文件总数

如何用python统计一个路径下的文件总数,第1张

刚好刚才写了一个

def get_dir_info(dir_path, deep=0, info=None):

    if info is None:

        info = {'deep': 0, 'deep_dir': '', 'file_num': 0, 'dir_num': 0}

    if deep > info['deep']:

        info['deep'] = deep

        info['deep_dir'] = dir_path

    file_list = os.listdir(dir_path)

    for file in file_list:

        file_path = os.path.join(dir_path, file)

        if os.path.isdir(file_path):

            info['dir_num'] += 1

            get_dir_info(file_path, deep=deep+1, info=info)

        else:

            info['file_num'] += 1

    if deep == 0:

        return info

if __name__ == '__main__':

    dir_path = "D:\\Tools\\WebStorm2016\\plugins"

    s = time.time()

    d = get_dir_info(dir_path)

    print("{}".format(time.time() - s))

    print(d)

# 所有的深度是基于给出的文件夹统计的

# deep_dir比较鸡肋, 因为如果有多个相同深度的文件夹就会替换掉只剩一个

# 可以自行去掉这个功能

# deep: 最深的层数

# deep_dir: 最深的路径名称

# dir_num: 文件夹数量

# file_num: 文件数量

'''

0.21001195907592773

{'deep': 12, 'deep_dir': 'D:\\Tools\\WebStorm2016\\plugins\\spy-js\\server\\node_modules\\istanbul\\node_modules\\resolve\\test\\resolver\\biz\\node_modules\\garply\\lib', 'file_num': 6325, 'dir_num': 1113}

'''

如果想把该目录下所有的文件都统计出来,包括子目录、子目录的子目录。。。

可以使用os.walk来找出目录下所有的文件

import os

print sum([len(x) for _, _, x in os.walk(os.path.dirname("test"))])

#test是目录名

os.walk会递归遍历指定目录下的文件,返回值分别为当前文件夹完整路径,当前文件夹中的文件夹和文件夹中的文件。我们只需要文件,所以其他的都不取出来了,直接使用"_"占位就行了。

如果只是想统计出当前目录下的文件,不包括子目录的。就使用os.listdir,只统计是文件的个数:

len([x for x in os.listdir(os.path.dirname(__file__)) if os.path.isfile(x)])


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8066206.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存