Модуль os дозволяє взаємодіяти з операційною системою.
Основні можливості:
• os.getcwd() — поточна директорія
• os.listdir(path) — список файлів у папці
• os.path.exists(path) — чи існує шлях
• os.path.join() — з'єднати частини шляху правильно
• os.makedirs() — створити папки
• os.rename() — перейменувати файл
• os.remove() — видалити файл
Модуль pathlib — сучасна альтернатива os.path:
from pathlib import Path
p = Path('my_folder')
p.mkdir(exist_ok=True)
💡 Приклад коду
Вивід:
📝 ЗАВДАННЯ (3)
1.
Завдання 1: Інвентаризація папки
30 XP
Напишіть скрипт, який виводить список усіх файлів у поточній папці з їхнім розміром у КБ. Файли згрупувати за розширенням.
💡 Підказка: Використовуйте Path('.').iterdir() та file.stat().st_size
🔓 Розв'язок:
from pathlib import Path
from collections import defaultdict
groups = defaultdict(list)
for f in Path('.').iterdir():
if f.is_file():
size_kb = f.stat().st_size / 1024
groups[f.suffix].append((f.name, size_kb))
for ext, files in sorted(groups.items()):
print(f'\n[{ext or "без розширення"}]')
for name, size in files:
print(f' {name}: {size:.1f} КБ')
Вивід:
2.
Завдання 2: Пошук дублікатів
40 XP
Напишіть скрипт, який знаходить файли з однаковим іменем (але різним розширенням) у вказаній папці. Наприклад, report.txt та report.pdf.
💡 Підказка: Зберіть імена файлів без розширень у словник: ключ — ім'я, значення — список розширень. Якщо розширень більше 1, це дублікат.
🔓 Розв'язок:
from pathlib import Path
from collections import defaultdict
duplicates = defaultdict(list)
for f in Path('.').iterdir():
if f.is_file():
duplicates[f.stem].append(f.suffix)
for name, exts in duplicates.items():
if len(exts) > 1:
print(f'{name}: {', '.join(exts)}')
Вивід:
3.
Завдання 3: Організатор файлів
50 XP
Напишіть скрипт, який створює папки за розширеннями файлів (txt, py, jpg тощо) та переміщує кожний файл у відповідну папку. Перед переміщенням виведіть план дій та запитайте підтвердження.
💡 Підказка: Використовуйте Path.mkdir(exist_ok=True) для створення папок та shutil.move() для переміщення. Для підтвердження — input().
🔓 Розв'язок:
from pathlib import Path
import shutil
folder = Path('.')
plan = {}
for f in folder.iterdir():
if f.is_file() and f.suffix:
ext = f.suffix[1:] # без крапки
if ext not in plan:
plan[ext] = []
plan[ext].append(f.name)
print('План:')
for ext, files in plan.items():
print(f' Папка [{ext}]: {len(files)} файлів')
if input('Виконати? (так/ні): ').lower() == 'так':
for ext, files in plan.items():
dest = folder / ext
dest.mkdir(exist_ok=True)
for name in files:
shutil.move(str(folder / name), str(dest / name))
print('Готово!')
else:
print('Скасовано.')