Python 如何计算目录和子目录中的所有文件?

Python 如何计算目录和子目录中的所有文件?,python,python-3.x,Python,Python 3.x,在这段代码中,我试图找到所有文件的长度。当我打印f时,它会给出目录和子目录中的所有文件名,但当我打印长度时,它会给出这个结果 4 7 7 3 我也在循环外打印了长度,但它没有计算目录中的文件 代码 import os path = '/home/runner/TestP1' for root,d_names,f_names in os.walk(path): for f in f_names: length = len(f) print(length) 使用f_name

在这段代码中,我试图找到所有文件的长度。当我打印
f
时,它会给出目录和子目录中的所有文件名,但当我打印
长度时,它会给出这个结果

4
7
7
3
我也在循环外打印了
长度
,但它没有计算目录中的文件

代码

import os
path = '/home/runner/TestP1'

for root,d_names,f_names in os.walk(path):
  for f in f_names:
    length = len(f)
    print(length)

使用f_names中的f的
您正在迭代当前
根目录中的文件名列表,因此
len(f)
以字符串形式返回每个文件名的长度,这不是您想要的

您可以使用带有生成器表达式的
sum
函数,该表达式输出由
os.walk
生成的文件名列表的长度:

sum(len(filenames) for _, _, filenames in os.walk(path))

-循环的
之外定义一个变量,以便所有后续循环都可以将文件名长度附加到:

import os
path = '/home/runner/TestP1'

lenghs = []
for root,d_names,f_names in os.walk(path):
  for f in f_names:
    lenghs.append(len(f))

print(lengths)

您是否试图查找所有文件名的长度之和,或者目录和子目录中有多少文件和文件夹?
    def fileCount:
        count = 0
        for filename in os.listdir(folder):
            path = os.path.join(folder, filename)
            if os.path.isfile(path):
                count += 1
            elif os.path.isfolder(path):
                count += fileCount(path)
        return count