我对Python很陌生,目前正在学习。
正如标题所说:对文件夹中的文件进行计数的最优雅、简洁、高效和python式的方法是什么?
让我们假设一个文件夹只包含文件而不包含子文件夹。
通过(天真地(应用我所学到的,我想出了这个:
from os import walk
num_files = -1
for (dir_path, dir_names, file_names) in walk(image_file_path):
for fn in file_names:
num_files += 1
它看起来并没有那么优雅,我意识到fn在整个迭代过程中都没有使用。此外,num_files=-1是最不优雅的。
那么,写这篇文章的更好方法是什么呢?
提前谢谢。
您可以尝试os.listdir
import os
len(os.listdir(image_file_path))
就我个人而言,我喜欢glob
:
from glob import glob
num_files = len(glob(dir_name.rstrip('/') + '/*'))
您可以通过将所有文件和文件夹放在指定的路径(如os.listdir("./")
(中来完成此操作。而不是像这个[i for i in os.listdir("./") if os.path.isfile(i)]
那样用列表理解来过滤所有文件。对于结束计数,则为列表中的对象。如果我们把它们放在一起,它看起来像这个len([i for i in os.listdir("./") if os.path.isfile(i)])
我认为以下是最Python的现代答案:
from pathlib import Path
path = Path(image_file_path)
num_files = sum(1 for x in path.iterdir() if x.is_file())
尝试列表理解
total_files = sum(len(dirData[2]) for dirData in walk(image_file_path))