Python: Урок 24 — Работа с файловой системой (модуль os)

Этот урок посвящен работе с файловой системой в 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. Будьте осторожны при удалении файлов и каталогов.

Что будем искать? Например,программа