如何检查不同目录中是否存在多个文件

时间:2014-08-18 19:35:46

标签: python io

我知道如何使用python来检查文件是否存在,但我正在尝试查看我的工作目录中是否存在多个同名文件。举个例子:

gamedata/areas/ 
# i have 2 folders in this directory
# testarea and homeplace


1. gamedata/areas/testarea/
2. gamedata/areas/homeplace/

例如,homeplace和testarea的每个文件夹都包含一个名为“example”的文件

是否有一种pythonic方式使用'os'或类似方法检查文件'example'是否可以在testarea和homeplace中找到?

虽然他们是一种无需手动和静态使用

的方法
os.path.isfile()

因为在程序的整个生命周期中都会创建新的目录,我不想经常回到代码中来改变它。

3 个答案:

答案 0 :(得分:0)

也许像

places = ["testarea", "homeplace"]
if all(os.path.isfile(os.path.join("gamedata/areas/", x, "example") for x in places)):
    print("Missing example")

如果条件为false,则不会告诉您哪个子目录不包含文件example。您可以根据需要更新places

答案 1 :(得分:0)

您可以检查gamedata/areas/下面的每个目录: 这只会下降一个级别,你可以将它扩展到你想要的多个级别。

from os import listdir
from os.path import isdir, isfile, join
base_path = "gamedata/areas/"
files = listdir(base_path)
only_directories = [path for path in files if isdir(join(base_path,path))]

for directory_path in only_directories:
    dir_path = join(base_path, directory_path)
    for file_path in listdir(dir_path):
        full_file_path = join(base_path, dir_path, file_path)
        is_file = isfile(full_file_path)
        is_example = "example" in file_path
        if is_file and is_example:
            print "Found One!!"

希望它有所帮助!

答案 2 :(得分:0)

正如我在评论中提到的,os.walk是你的朋友:

import os

ROOT="gamedata/areas"
in_dirs = [path for (path, dirs, filenames)
                 in os.walk(ROOT)
                 if 'example' in filenames]

in_dirs将是找到example的子目录列表

相关问题