7.1 Основні операції
Працювати з файлами ти навчився, тепер давай попрацюємо з директоріями. Іноді це схоже на роботу з файлами, іноді ні. У директорій є своя специфіка. Основні функції для роботи з директоріями надаються модулями os та shutil.
Основні операції з директоріями:
Створення директорії
Для створення нової директорії використовується функція os.mkdir().
Приклад:
import os
# Створення нової директорії
os.mkdir('new_directory')
print("Директорія 'new_directory' створена")
Створення кількох вкладених директорій
Для створення кількох вкладених директорій використовується функція os.makedirs().
Приклад:
import os
# Створення кількох вкладених директорій
os.makedirs('parent_directory/child_directory')
print("Вкладені директорії 'parent_directory/child_directory' створені")
Видалення директорії
Для видалення порожньої директорії використовується функція os.rmdir(). Для видалення директорії з вмістом використовується функція shutil.rmtree().
Приклад:
import os
# Видалення порожньої директорії
os.rmdir('new_directory')
print("Директорія 'new_directory' видалена")
Приклад видалення директорії з вмістом:
import shutil
# Видалення директорії з вмістом
shutil.rmtree('parent_directory')
print("Директорія 'parent_directory' та весь її вміст видалено")
Важливо! Ніколи не видаляй директорію зі всім вмістом. В одному з 10 випадків в твою програму затеснеться баг, і ти видалиш собі половину файлів на диску. Всі через це проходять. Ніколи так не роби.
Рекомендується перед видаленням директорії перевірити її існування за допомогою функції os.path.exists(). Це може запобігти помилкам, пов'язаним з видаленням неіснуючої директорії або неправильного шляху.
Приклад:
import os
import shutil
# Перевірка існування директорії перед видаленням
directory_path = 'parent_directory'
if os.path.exists(directory_path):
shutil.rmtree(directory_path)
print(f"Директорія '{directory_path}' та весь її вміст видалено")
else:
print(f"Директорія '{directory_path}' не існує, видалення неможливе")
7.2 Копіювання директорій
Переміщення та перейменування директорії
Для переміщення або перейменування директорії використовується функція os.rename().
import os
# Створення директорії для прикладу
os.mkdir('original_directory')
# Перейменування директорії
os.rename('original_directory', 'renamed_directory')
print("Директорія 'original_directory' перейменована в 'renamed_directory'")
Копіювання директорії
Для копіювання директорії використовується функція shutil.copytree(). Ця функція не тільки копіює вміст директорії, але й створює нову директорію в зазначеному шляху призначення.
import os
import shutil
# Створення директорії для прикладу
os.mkdir('source_directory')
# Копіювання директорії
shutil.copytree('source_directory', 'destination_directory')
print("Директорія 'source_directory' скопійована в 'destination_directory'")
7.3 Поточна директорія
До кожної запущеної програми прив'язане таке поняття, як «поточна робоча директорія». Зазвичай це директорія, в якій запущена програма і в якій вона шукає свої службові файли. Наприклад, всі файли, шляхи яких задані без імені каталогу, будуть шукатися в поточній директорії.
Отримання поточної робочої директорії
Для отримання поточної робочої директорії використовується функція os.getcwd().
import os
# Отримання поточної робочої директорії
current_directory = os.getcwd()
print(f"Поточна робоча директорія: {current_directory}")
Зміна поточної робочої директорії
Для зміни поточної робочої директорії використовується функція os.chdir().
import os
# Зміна поточної робочої директорії
os.chdir('new_directory')
print(f"Поточна робоча директорія змінена на: {os.getcwd()}")
Зміна поточної робочої директорії може вплинути на шляхи до файлів, які вказуються відносно поточного каталогу. Будь уважним при зміні директорії, оскільки це може призвести до помилок, якщо програма очікує файл в початковій директорії.
Перевірка існування директорії
Для перевірки існування директорії використовується функція os.path.exists().
import os
# Перевірка існування директорії
directory_path = 'new_directory'
if os.path.exists(directory_path):
print(f"Директорія '{directory_path}' існує")
else:
print(f"Директорія '{directory_path}' не існує")
Отримання абсолютного шляху директорії
Для отримання абсолютного шляху використовується функція os.path.abspath().
import os
# Отримання абсолютного шляху директорії
relative_path = 'example_directory'
absolute_path = os.path.abspath(relative_path)
print(f"Абсолютний шлях: {absolute_path}")
7.4 Вміст директорії
Отримання списку файлів і директорій
Для отримання списку файлів і директорій в зазначеній директорії використовується функція os.listdir().
import os
# Отримання списку файлів і директорій у поточній директорії
contents = os.listdir('.')
print(f"Вміст поточної директорії: {contents}")
Можна працювати з файлами і директоріями не як із списками шляхів, а як із більш складними об'єктами.
Отримання інформації про вміст директорії з використанням os.scandir()
Функція os.scandir() повертає ітератор, який видає об'єкти DirEntry для кожного запису в директорії. Ці об'єкти містять інформацію про файли і директорії, що робить їх використання більш ефективним в порівнянні з os.listdir(), особливо для великих каталогів.
import os
# Отримання інформації про вміст директорії
with os.scandir('.') as entries:
for entry in entries:
print(f"Ім'я: {entry.name}, Це директорія: {entry.is_dir()}, Це файл: {entry.is_file()}")
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ