Если вы хотите получить один и тот же вывод (сортировка может отличаться), вам нужно распечатать каталоги и файлы по указанному пути.find
возвращает каталоги, а также ссылки (на что угодно).Минимальное изменение вашего кода будет:
print(THIS_PATH)
for dirpath, dirs, files in os.walk(THIS_PATH):
for fname in dirs + files: # iterate over items form both lists
print (os.path.join(dirpath, fname))
Это может быть немного проще сделать с pathlib
:
from pathlib import Path
mypath = Path(THIS_PATH)
for found_item in mypath.rglob('*'):
print(mypath.joinpath(found_item))
Например, ясоздал следующее дерево:
.
├── d1
│ ├── d2
│ │ └── f2
│ └── f1
├── f2 -> d1/d2/f2
└── l1 -> d1
Запуск find
приведет к (заметки о каталогах и ссылки на каталоги выглядят одинаково):
$ find .
.
./f2
./l1
./d1
./d1/.h
./d1/d2
./d1/d2/f2
./d1/f1
И запуск первого фрагмента с THIS_PATH='.'
возвращает те же элементы (в несколько ином порядке, find
по умолчанию будет иметь глубину в первую очередь, os.walk
- ширину в первую очередь).Для этого pathlib
примера, будьте осторожны, если THIS_PATH
равен '.'
, так как он будет скомпрометировать ведущий ./
.