Это руководство представляет собой исчерпывающее пособие по основным операциям с файлами и каталогами в Python, используя возможности модулей os
и shutil
. Мы рассмотрим создание, доступ, перечисление, изменение и удаление каталогов, оснастив вас навыками эффективного управления файловой системой в ваших скриптах на Python.
Содержание
- Создание каталогов
- Получение текущего каталога
- Перечисление содержимого каталога
- Изменение рабочего каталога
- Переименование и удаление каталогов
- Методы работы с путями
- Надежная обработка ошибок
1. Создание каталогов
Модуль os
предлагает функции для взаимодействия с операционной системой. os.mkdir()
создает один каталог, а os.makedirs()
обрабатывает создание вложенных каталогов. Параметр exist_ok
предотвращает ошибки, если каталог уже существует.
import os
# Создание одного каталога
os.mkdir("my_new_directory")
# Создание вложенных каталогов
os.makedirs("nested/directories/example", exist_ok=True)
print("Каталоги созданы успешно!")
2. Получение текущего каталога
Используйте os.getcwd()
для получения текущего рабочего каталога.
import os
current_directory = os.getcwd()
print(f"Текущий рабочий каталог: {current_directory}")
3. Перечисление содержимого каталога
os.listdir()
перечисляет все записи (файлы и каталоги) в указанном пути. Сочетайте его с os.path.isdir()
для фильтрации только каталогов.
import os
directory_path = "."
all_entries = os.listdir(directory_path)
directories = [entry for entry in all_entries if os.path.isdir(os.path.join(directory_path, entry))]
print("Каталоги:")
for directory in directories:
print(directory)
4. Изменение рабочего каталога
os.chdir()
изменяет текущий рабочий каталог. Всегда включайте обработку ошибок (например, используя блоки try-except
) для управления потенциальными проблемами, такими как несуществующие каталоги.
import os
try:
os.chdir("my_new_directory")
print(f"Текущий рабочий каталог изменен на: {os.getcwd()}")
os.chdir("..") #Переход на уровень выше
print(f"Текущий рабочий каталог изменен обратно на: {os.getcwd()}")
except FileNotFoundError:
print("Ошибка: Каталог не найден.")
except OSError as e:
print(f"Произошла ошибка ОС: {e}")
5. Переименование и удаление каталогов
os.rename()
переименовывает каталоги. os.rmdir()
удаляет пустые каталоги. Для непустых каталогов используйте shutil.rmtree()
с крайней осторожностью, так как он рекурсивно удаляет все содержимое целевого каталога. Всегда создавайте резервные копии важных данных перед использованием этой функции.
import os
import shutil
# Переименование каталога
os.rename("my_new_directory", "renamed_directory")
# Удаление пустого каталога
os.rmdir("empty_directory") #Требуется пустой каталог с именем "empty_directory"
# Удаление непустого каталога (использовать с крайней осторожностью!)
shutil.rmtree("non_empty_directory") #Требуется каталог с именем "non_empty_directory" - это удалит все его содержимое.
print("Операции с каталогами завершены.")
6. Методы работы с путями
Модуль os.path
предоставляет инструменты для безопасной и переносимой работы с путями, что крайне важно для избежания проблем, специфичных для платформы.
import os
# Безопасное объединение путей
path = os.path.join("path", "to", "my", "file.txt")
# Получение имени файла и расширения
file_name, file_ext = os.path.splitext(path)
# Проверка существования пути
if os.path.exists(path):
print("Путь существует")
7. Надежная обработка ошибок
Всегда предвидьте потенциальные ошибки (например, FileNotFoundError
, PermissionError
, OSError
) и реализуйте соответствующие механизмы обработки ошибок, чтобы сделать ваш код надежным и предотвратить неожиданные сбои.