Как я могу перечислять только папки без подпапок в указанном пути?

Проблема: я дал структуру 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
1
задан 30 May 2016 в 11:27

1 ответ

В маленьком скрипте 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)

Чтобы использовать его

Скопируйте его в пустой файл, сохраните его как count_empty.py Запустите его с целевой директорией как Аргумент:
python3 /path/to/count_empty.py '<source_directory>'

Как это работает

Скопируйте его в пустой файл, сохраните его как count_empty.py Затем строка
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
5
ответ дан 23 May 2018 в 10:37

Другие вопросы по тегам:

Похожие вопросы: