JavaRush /Курсы /Модуль 1: Python Core /Работа с файлами на диске

Работа с файлами на диске

Модуль 1: Python Core
12 уровень , 5 лекция
Открыта

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}")
        

Важно! Всегда пользуйтесь системными функциями при работе с путями, так как ваш код может быть запущен на другой операционной системе, где разделитель файлов не \, а /, или где запрещены «:» в путях или еще что-то.

2
Задача
Модуль 1: Python Core, 12 уровень, 5 лекция
Недоступна
Копирование файла
Копирование файла
2
Задача
Модуль 1: Python Core, 12 уровень, 5 лекция
Недоступна
Проверка существования файла
Проверка существования файла
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Mikhail Уровень 26
30 сентября 2025
решение первой задачи в одну строку - сильно!
Slevin Уровень 64
8 июля 2025
Первое задание - копия задания из предыдущей лекции, хотя казалось бы, уместно было бы попробовать скопировать файл используя изученные библиотеки. Задания в этом курсе по большей части даны просто для наполнения и не содержат смысла.
Max Pridan Уровень 30
21 апреля 2025
Чисто мое мнение 6.2 испульзуем path до того как обьясняем что это 6.4 сначала даем пример где используется basename, где он в принципе не нужен для примера, а только потом рассказываем про basename. 6.5 получение абсолютного пути, написали чтобы было, что автор имел ввиду, что такое в принципе абсолютный путь, зачем обьяснять примерами и так сойдет. Лекции поданы так, что я почти все переспрашиваю у gpt/google. По всей видимости я слишком тупой и крайне далек от логики автора, видимо надо смотреть аналоги.