@ lenik на правильном пути, я считаю, что использование наборов - самый простой способ получить то, что вы хотите. Вот полное и проверенное решение с использованием модуля pathlib, в котором перечислены все файлы png / json, для которых нет подходящей пары в предоставленной папке и во всех подпапках:
def get_unpaired_files(directory: str) -> []:
dir_path = Path(directory).resolve()
json_files = get_files_without_extension(dir_path, pattern='*.json')
png_files = get_files_without_extension(dir_path, pattern='*.png')
return [str(f) for f in set(json_files) ^ set(png_files)]
def get_files_without_extension(dir_path: Path, pattern: str) -> []:
return [f.with_suffix('') for f in dir_path.rglob(pattern)]
Использование:
unpaired_files = get_unpaired_files(r'E:\abc')
if unpaired_files :
print('Unpaired file paths were found:')
print('\n'.join(unpaired_files))