Python: 检查给定目录中是否存在任何文件

8

如果给定一个目录字符串,我该如何查找其中是否存在任何文件?

os.path.isFile()       # only accepts a specific file path
os.listdir(dir) == []  # accepts sub-directories

我的目标是检查一个路径是否只有文件 (不包括子目录)。


在实践中,很少需要这样做,因为一个正确编写的循环可以处理目录中所有感兴趣的文件,如果没有任何文件,则只会迭代0次。如果您想要,可以在循环中计数,然后检查有多少个文件被处理了。 - martineau
1个回答

14

如果只想检查一个特定的目录,可以使用像这样的解决方案:

from os import listdir
from os.path import isfile, join

def does_file_exist_in_dir(path):
    return any(isfile(join(path, i)) for i in listdir(path))

解析正在发生的事情:

  • 方法does_file_exist_in_dir将获取您的路径。
  • 使用any,通过调用listdir迭代遍历路径的内容来查找文件。请注意在路径上使用join以提供合格的文件路径名进行适当的检查。

作为一个选项,如果您想要遍历给定路径下的所有子目录并检查文件,可以使用os.walk,并像这样检查当前层级是否包含任何文件:

for dir, sub_dirs, files in os.walk(path):
    if not files:
        print("no files at this level")

@idjaw:os.walk()会遍历所有子目录。我只需要查找一个给定的路径。 - user4211737
@meestaman,我正在制定一种解决方案,正好就是为了解决这个问题。稍等片刻。 :) - idjaw
@idjaw:太棒了!谢谢 :) - user4211737
谢谢idjaw。非常好用! - user4211737
1
似乎 any_files = len(glob.glob(os.path.join(dir_path, '*.*'))) > 0 就足够了。 - martineau
@martineau 我也考虑过使用glob,但是如果文件名没有'.'的话,那就行不通了。 - idjaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接