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

2024-10-01 11:26:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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


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

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

有没有一种python方法可以使用'os'或similar来检查文件'example'是否可以在testarea和homeplace中找到?在

虽然这是一种无需手动和静态使用的方法吗

^{pr2}$

因为在整个程序的生命周期中都会产生新的目录,我不想不断地回到代码中去改变它。在


Tags: and文件方法in目录examplehavethis
3条回答

也许是像

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。在

您可以在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!!"

希望有帮助!在

正如我在评论中提到的,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的子目录列表

相关问题 更多 >