Код
from pathlib import Path
def list_directory_structure_limited(path):
"""
Головна функція для виклику. Виводить назву кореневої папки.
"""
if not path.is_dir():
print(f'Помилка: Директорія {path} не знайдена.')
return
print(f'Структура директорії {path} (по 2 файли в папці):')
print(f'{path.name}/')
_walk_directory_limited(path, prefix="")
def _walk_directory_limited(path, prefix=""):
"""
Рекурсивна допоміжна функція для обходу та виведення структури.
"""
try:
all_items = list(path.iterdir())
except PermissionError:
print(f"{prefix}└── [Немає доступу]")
return
dirs = sorted([p for p in all_items if p.is_dir()])
files = sorted([p for p in all_items if p.is_file()])
files_to_show = files[:2]
hidden_files_count = len(files) - len(files_to_show)
items_to_display = dirs + files_to_show
for i, item_path in enumerate(items_to_display):
is_last_item = (i == len(items_to_display) - 1) and (hidden_files_count == 0)
pointer = '└── ' if is_last_item else '├── '
print(f'{prefix}{pointer}{item_path.name}')
if item_path.is_dir():
extension = ' ' if is_last_item else '│ '
_walk_directory_limited(item_path, prefix=prefix + extension)
if hidden_files_count > 0:
print(f'{prefix}└── ... та ще {hidden_files_count} файлів')
directory_to_scan = Path('data/pizza_steak_sushi')
list_directory_structure_limited(directory_to_scan)Структура директорії data\pizza_steak_sushi (по 2 файли в папці):
pizza_steak_sushi/
├── test
│ ├── pizza
│ │ ├── 1152100.jpg
│ │ ├── 1503858.jpg
│ │ └── ... та ще 23 файлів
│ ├── steak
│ │ ├── 100274.jpg
│ │ ├── 1016217.jpg
│ │ └── ... та ще 17 файлів
│ └── sushi
│ ├── 1172255.jpg
│ ├── 1230335.jpg
│ └── ... та ще 29 файлів
└── train
├── pizza
│ ├── 1008844.jpg
│ ├── 1033251.jpg
│ └── ... та ще 76 файлів
├── steak
│ ├── 100135.jpg
│ ├── 1225762.jpg
│ └── ... та ще 73 файлів
└── sushi
├── 1070104.jpg
├── 1129338.jpg
└── ... та ще 70 файлів



