我知道如何使用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()
因为在程序的整个生命周期中都会创建新的目录,我不想经常回到代码中来改变它。
答案 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
的子目录列表