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}")
Важливо! Завжди користуйтесь системними функціями при роботі з шляхами, так як ваш код може бути запущений на іншій операційній системі, де роздільник файлів не \, а /, або де заборонені «:» у шляхах або ще щось.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ