Этот урок посвящен работе с файловой системой в Python, используя встроенный модуль os. Он предоставляет функции для управления файлами, директориями и процессами, обычно работающие на разных операционных системах (Linux, Windows, macOS), хотя возможны некоторые нюансы.
Модуль os
Модуль os входит в стандартную библиотеку Python и предоставляет удобный способ работы с операционной системой, абстрагируя многие зависимости от конкретной ОС.
Работа с файлами
Рассмотрим функции модуля os для работы с файлами:
Проверка существования файла или каталога (os.path.exists())
os.path.exists() проверяет существование файла или каталога.
import os
print(os.path.exists('test.txt')) # True, если файл test.txt существует
print(os.path.exists('test1.txt')) # False, если файл test1.txt не существует
print(os.path.exists('путь/к/каталогу')) # True/False в зависимости от существования каталога
Определение типа файла (os.path.isfile())
os.path.isfile() определяет, является ли указанный путь файлом.
import os
print(os.path.isfile('test.txt')) # True, если test.txt - файл
print(os.path.isfile('путь/к/каталогу')) # False, если это каталог
Переименование файла (os.rename())
os.rename() переименовывает файл.
import os
os.rename('test.txt', 'new.txt') # Переименовывает test.txt в new.txt
Удаление файла (os.remove())
os.remove() удаляет файл. Будьте осторожны! Удаление происходит безвозвратно.
import os
os.remove('new.txt') # Удаляет файл new.txt
Работа с каталогами
Путь к файлу или каталогу указывает его местоположение. Пути бывают абсолютными (полный путь от корня файловой системы, например, C:PythonProjectfile.txt) и относительными (относительно текущей директории).
Получение текущего пути (os.getcwd())
os.getcwd() возвращает абсолютный путь к текущей директории.
import os
print(os.getcwd()) # Выводит текущий путь
Создание каталога (os.makedirs())
os.makedirs() создает каталог. Обратите внимание на обработку обратных слешей в Windows:
import os
os.makedirs('new_dir') # Создает каталог new_dir
os.makedirs('C:\MyDir') # Создает каталог MyDir на диске C (Обратите внимание на экранирование обратных слешей)
Для избежания ошибок с путями в разных ОС, рекомендуется использовать модуль pathlib (Python 3.4+).
Удаление каталога (os.rmdir() и shutil.rmtree())
os.rmdir() удаляет пустой каталог. Для непустых каталогов используйте shutil.rmtree().
import os
import shutil
os.rmdir('new_dir') # Удаляет пустой каталог new_dir
shutil.rmtree('путь/к/непустому/каталогу') # Удаляет непустой каталог (будьте осторожны!)
Просмотр содержимого каталога (os.listdir())
os.listdir() возвращает список имен файлов и подкаталогов в указанном каталоге.
import os
print(os.listdir('.')) # Выводит содержимое текущего каталога
Перемещение файлов (os.rename())
os.rename() может перемещать файлы путем переименования с указанием нового пути.
import os
os.rename('test.txt', 'test_dir/test.txt') # Перемещает test.txt в каталог test_dir
Изменение текущей директории (os.chdir())
os.chdir() изменяет текущую рабочую директорию.
import os
os.chdir('new_dir') # Изменяет текущую директорию на new_dir
print(os.getcwd()) # Выводит новый текущий путь
Модуль os предоставляет базовые инструменты для работы с файловой системой. Для сложных операций и лучшей кроссплатформенной совместимости рекомендуется использовать модули pathlib и shutil. Будьте осторожны при удалении файлов и каталогов.