Проблема: я дал структуру dir
├── kat11
│ ├── kat21
│ │ └── Dokument\ bez\ nazwy
│ └── kat22
│ ├── kat31
│ │ └── Dokument\ bez\ nazwy
│ └── kat32
│ └── Dokument\ bez\ nazwy
├── kat12
│ └── kat21
│ └── Dokument\ bez\ nazwy
├── kat13
│ └── Dokument\ bez\ nazwy
└── kat14
└── Kat21
└── Kat32
└── Dokument\ bez\ nazwy
Я хочу перечислить только все дочерние папки с полным путем.
eg
1. /kat14/kat21/kat32/Dokument\ bez\ nazwy
2. /kat11/kat22/kat31/Dokument\ bez\ nazwy
3. /kat11/kat22/kat32/Dokument\ bez\ nazwy
4. /kat12/kat21/Dokument\ bez\ nazwy
В маленьком скрипте python:
#!/usr/bin/env python3
import os
import sys
src = sys.argv[1]
for root, dirs, files in os.walk(src):
for dr in dirs:
directory = root+"/"+dr
if len([sub for sub in os.listdir(directory) \
if os.path.isdir(directory+"/"+sub)]) == 0:
print(directory)
python3 /path/to/count_empty.py '<source_directory>'
if len([sub for sub in os.listdir(directory) if os.path.isdir(directory+"/"+sub)]) == 0:
подсчитывает количество подкаталогов на каждом из них. Если он равен нулю (нет подкаталогов), печатается каталог и его путь. Тест на простой папке пакета на моем рабочем столе:
$ '/home/jacob/Bureaublad/pscript_5.py' '/home/jacob/Bureaublad/0.5.3'
/home/jacob/Bureaublad/0.5.3/nonotifs-0.5.3/manpages
/home/jacob/Bureaublad/0.5.3/nonotifs-0.5.3/miscellaneous
/home/jacob/Bureaublad/0.5.3/nonotifs-0.5.3/icon
/home/jacob/Bureaublad/0.5.3/nonotifs-0.5.3/code
/home/jacob/Bureaublad/0.5.3/nonotifs-0.5.3/debian/source