Модуль glob
- ваш друг. Вам даже не нужно сопоставлять несколько каталогов, glob
сделает это за вас:
from glob import glob
testfiles = glob("sub/*/testing.txt")
if len(testfiles) > 0 and all("_cube/" in path for path in testfiles):
print("Pass")
else:
print("Fail")
Если это не очевидно, тест all("_cube/" in path for path in testfiles)
позаботится об этом требовании:
Если файл существует в обоих местах, я хочу только "не удалось" распечатать. Проблема в том, что * символ считает hbc_cube
.
Если некоторые из совпавших путей не содержат _cube
, тест не пройден. Так как вы хотите узнать о файлах, которые приводят к тому, что тест не удастся , вы не можете искать только файлы по пути, содержащему *_cube
- вы должны извлечь как хорошие, так и плохие пути и проверить их, как показано.
Конечно, вы можете сократить приведенный выше код или обобщить его, чтобы создать глобальный путь, комбинируя параметры из списка папок, списка файлов и т. Д., В зависимости от особенностей вашего случая.
Обратите внимание, что существуют "полные регулярные выражения", предоставляемые модулем re
, и более простые "глобусы", используемые модулем glob
. Если вы идете проверить документацию, не путайте их.