псевдокод:
def check_directory(directory):
"""Returns whether the directory has all the required names."""
names = ["love.dat", "love_p.dat", "love_r.dat", "love_q.dat"]
return all(os.path.exists(os.path.join(directory, x) for x in names))
В частности, обратите внимание, что здесь используются «более умные» манипуляции с именами файлов с использованием метода объединения путей (который зависит от ОС), но весьма вероятно, что нормальное манипулирование строками здесь подойдет; Кроме того, обратите внимание, что он проверяет наличие этих имен - как это сделать, зависит от вашей конкретной среды и языка - в то время как все остальное - просто шаблон для его настройки.
Если «любовь» - это основа, а не буквальное имя, вам нужно динамически добавить его в список имен:
def check_directory(directory, stem):
"""Returns whether the directory has all the required names."""
names = [stem + x for x in [".dat", "_p.dat", "_r.dat", "_q.dat"]]
return all(os.path.exists(os.path.join(directory, x) for x in names))
print check_directory("/", "love") # example use
И если вы хотите проверить все возможные основы в данном каталоге, вам просто нужно перебрать имена в этом каталоге:
def find_file_groups(directory):
"""Returns groups of files as tuples of (base, _p, _r, _q)."""
for name in os.listdir(directory):
if name.endswith(".dat"): # apply more filters if required
base = name[:-4] # remove .dat
names = tuple(base + x for x in [".dat", "_p.dat", "_r.dat", "_q.dat"])
if all(os.path.exists(os.path.join(directory, x) for x in names)):
yield names