Отфильтруйте свои файлы с пониманием списка:
for dir, dirs, files in os.walk(src):
files = [os.path.join(dir, f) for f in files if not f.endswith('.txt')]
Я удалил аргумент topdown=True
; это значение по умолчанию.
Не используйте glob.glob()
в сочетании с os.walk()
; оба метода запрашивают у операционной системы имена файлов в каталоге. У вас уже есть эти имена файлов в третьем значении каждой итерации более os.walk()
.
Если вы хотите пропустить весь каталог, используйте any()
функцию, чтобы увидеть если есть какие-либо совпадающие файлы, используйте continue
игнорировать этот каталог:
for dir, dirs, files in os.walk(src):
if any(f.endswith('.txt') for f in files):
continue # ignore this directory
# do something with the files here, there are no .txt files.
files = [os.path.join(dir, f) for f in files]
Если вы хотите игнорировать этот каталог и все его потомки, также очистите переменную dirs
, используя назначение фрагмента:
for dir, dirs, files in os.walk(src):
if any(f.endswith('.txt') for f in files):
dirs[:] = [] # do not recurse into subdirectories
continue # ignore this directory
# do something with the files here, there are no .txt files.
files = [os.path.join(dir, f) for f in files]
person
Martijn Pieters
schedule
09.02.2016