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()}")
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ