Ответ на этот вопрос прост: выполните два listdir
вызова, затем пропустите файлы в папке 1, которые также находятся в папке 2.
Один из способов сделать это с помощью операций над множествами: разность множеств a - b
означает все элементы в a
, которые также не входят в b
, и это именно то, что вам нужно.
files1 = set(os.listdir(folder1))
files2 = set(os.listdir(folder2))
files1 -= files2
paths1 = [os.path.join(folder1, file) for file in files1]
paths2 = [os.path.join(folder2, file) for file in files2]
for path in paths1 + paths2:
if os.path.isdir(path):
# etc.
В качестве примечания, динамически создаем группу переменных, подобных этойпочти всегда очень плохая идея, и делать это с exec
вместо globals
или setattr
- еще хуже.Обычно лучше хранить все, например, в диктовке.Например:
queries = {}
for path in paths1 + paths2:
if os.path.isdir(path):
continue
name = os.path.splitext(os.path.basename(path))[0]
with open(path) as f:
queries[name] = f.read()