6.1 Робота з файлами
Python надає багато вбудованих функцій і модулів для роботи з
файлами та каталогами. Основні операції виконуються з використанням
вбудованих модулів os
, shutil
та інших.
Три основні операції з файлами:
- Копіювання
- Переміщення
- Видалення
Для їх виконання ідеально підходить модуль shutil
.
Копіювання файлу
import shutil
shutil.copy('source.txt', 'destination.txt')
Переміщення файлу
import shutil
shutil.move('source.txt', 'destination.txt')
Видалення файлу
import os
os.remove('example.txt')
Простіше, ніж будь-коли.
6.2 Перевірка існування файлу
Дуже часто потрібно перевірити, чи існує певний файл чи ні.
Для цього у модуля os
є спеціальний метод —
exists()
.
Перевірка існування файлу
import os
if os.path.exists('example.txt'):
print("File exists")
else:
print("File does not exist")
# Якщо файл не існує, програма виконає дії, описані в блоці else.
# Наприклад, можна вивести попередження, створити новий файл або вийти з програми.
Якщо файл не існує, програма може обробити це за допомогою умов або викликати виключення.
6.3 Перевірка типу об'єкта: файл чи директорія
Дуже часто потрібно перевірити, чи є об'єкт файлом або директорією. Наприклад, якщо ти зчитуєш весь вміст директорії і файли потрібно обробити по одному, а директорії — по-іншому.
Для таких випадків є два спеціальних методи — isdir()
, який перевіряє, чи є об'єкт директорією, та isfile()
, який перевіряє, чи є об'єкт файлом.
Перевірка — це директорія чи ні
if os.path.isdir('example_directory'):
print("Це директорія")
else:
print("Це не директорія")
Перевірка — це файл чи ні
if os.path.isfile('example_file'):
print("Це файл")
else:
print("Це не файл")
Це дуже корисні функції, які ти будеш використовувати частіше, ніж думаєш. :)
6.4 Робота з шляхами
У модуля os
є дочірній модуль os.path
,
який містить корисні функції для роботи з файлами та каталогами. Ось
деякі з них:
Отримання розширення файлу
Функція splitext()
ділить ім'я файлу на дві частини і
повертає список з двох елементів: імені та розширення.
import os.path
# Отримання розширення файлу
file_path = 'example.txt'
file_extension = os.path.splitext(file_path)[1]
print(f"Розширення файлу: {file_extension}")
Отримання імені файлу без розширення
import os.path
# Отримання імені файлу без розширення
file_path = 'example.txt'
file_name = os.path.splitext(os.path.basename(file_path))[0]
print(f"Ім'я файлу без розширення: {file_name}")
Отримання імені файлу з шляху
Функція basename()
повертає тільки ім'я файлу, відрізаючи
весь шлях до нього.
import os.path
# Отримання імені файлу з шляху
file_path = '/path/to/example.txt'
file_name = os.path.basename(file_path)
print(f"Ім'я файлу: {file_name}")
Отримання директорії з шляху
Також легко отримати тільки директорію з імені файлу за допомогою
функції dirname()
.
import os.path
# Отримання директорії з шляху
file_path = '/path/to/example.txt'
directory = os.path.dirname(file_path)
print(f"Директорія: {directory}")
Об'єднання шляхів
Якщо у тебе є окремо директорія і окремо ім'я файлу, ти можеш отримати повний шлях до цього файлу.
import os.path
# Об'єднання шляхів
directory = '/path/to'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"Повний шлях: {full_path}")
6.5 Платформенно-незалежні шляхи
Під час роботи з шляхами важливо враховувати відмінності між операційними системами. Роздільники шляхів можуть відрізнятися, і код, який працює на одній платформі, може не працювати на іншій. Щоб уникнути проблем при перенесенні коду між різними операційними системами, використовуйте функції os.path.join()
, os.path.abspath()
та os.path.dirname()
, які забезпечують сумісність з різними платформами.
Наприклад:
import os
# Об'єднання шляхів платформенно-незалежним способом
directory = 'some_directory'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"Повний шлях: {full_path}")
Отримання абсолютного шляху
Якщо у тебе є шлях лише відносно поточного робочого каталогу, але ти
хочеш перетворити його на абсолютний, для цього є
функція abspath()
.
import os.path
# Отримання абсолютного шляху
relative_path = 'example.txt'
absolute_path = os.path.abspath(relative_path)
print(f"Абсолютний шлях: {absolute_path}")
Важливо!
Завжди користуйтесь системними функціями
при роботі з шляхами, так як ваш код може бути запущений на іншій операційній
системі, де роздільник файлів не \
, а /
, або де заборонені «:»
у шляхах або
ще щось.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ