Python文件树+文件和目录的大小和计数数量

时间:2019-03-26 12:41:44

标签: python python-3.x

我目前有这个:

import os

def list_files(startpath):
    for root, dirs, files in os.walk(startpath):
        level = root.replace(startpath, '').count(os.sep)
        indent = ' ' * 4 * (level)
        print("F"+'{}{}/'.format(indent, os.path.basename(root)))
        subindent = ' ' * 4 * (level + 1)
        for f in files:
            print("D"+'{}{}'.format(subindent, f))
list_files('.')

现在的问题是我需要这样做: 制作一个可执行的Python脚本,该脚本将打印文件树,如下所示:

D或F [文件名/目录名] [目录中的文件大小/计数文件]

我只需要添加一个,但是我不知道如何: 目录中的文件大小或文件数

我想改进的地方是,您也可以在执行

要求输入之前自行选择位置。
location = input("Location: ")

应递归扫描此位置的目录,并将其显示在树中。 如果有人可以帮助我,那将非常有用!

预先感谢

〜Blackd00r

1 个答案:

答案 0 :(得分:0)

此问题的解决方案是:

我为文件和目录添加了一个计数器,它们都从0开始。在forloop中,我们添加了dir的长度,以便可以计算总数。

打印({}个文件夹中的“ {}个文件”。format(filecount,dircount))

import os
def list_files(startpath):
    dircount = 0
    filecount = 0
    for root, dirs, files in os.walk(startpath):
        dircount += len(dirs)
        filecount += len(files)
        level = root.replace(startpath, '').count(os.sep)
        indent = ' ' * 4 * (level)
        print("D"+'{}{}/'.format(indent, os.path.basename(root)))
        subindent = ' ' * 4 * (level + 1)
        for f in files:
            path = os.path.join(root, f)
            size = os.stat(path).st_size
            print("F"+'{}{} ({} bytes)'.format(subindent, f, size))
    print("{} files in {} folders".format(filecount, dircount))

list_files('.')