Управление файлами в Python: создание, удаление, переименование и перемещение файлов с помощью модуля os.

онлайн тренажер по питону
Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Самоучитель Python 3, собранный из материалов данного сайта.Предназначен в основном для тех, кто хочет изучить язык программирования Python с нуля.

Создание файлов в Python: полное руководство

Работа с файлами является одной из основных задач в программировании на Python. В этом руководстве мы подробно рассмотрим, как создавать, читать, записывать и управлять файлами в Python.

Основы работы с файлами

Для создания новых файлов в Python используется встроенная функция open() с различными режимами открытия. Основная структура работы с файлами выглядит следующим образом:

# Создание нового текстового файла
with open('новый_файл.txt', 'режим') as f:
    pass  # В этом примере файл будет пустым, так как мы ничего в него не записываем

Использование конструкции with гарантирует автоматическое закрытие файла после завершения работы, даже если произойдет ошибка.

Режимы работы с файлами

Python предоставляет несколько режимов для работы с файлами:

Режим Описание
'r' Открытие файла для чтения. Файл должен существовать
'w' Открытие файла для записи. Если файл не существует, он будет создан. Если файл существует, его содержимое будет перезаписано
'a' Открытие файла для добавления (дописывания) в конец файла. Если файл не существует, он будет создан
'x' Открытие файла для эксклюзивного создания. Если файл с указанным именем уже существует, операция завершится ошибкой
'b' Дополнительный режим, который указывает, что файл открывается в бинарном режиме. Например, 'wb' для записи в бинарном режиме
'+' Дополнительный режим, который позволяет открывать файл как для чтения, так и для записи. Например, 'r+' или 'w+'

Практические примеры работы с файлами

Чтение файла ('r')

with open('file.txt', 'r', encoding='utf-8') as f:
    content = f.read()
    print(content)

Запись в файл ('w')

with open('file.txt', 'w', encoding='utf-8') as f:
    f.write('Hello, World!')

Добавление в конец файла ('a')

with open('file.txt', 'a', encoding='utf-8') as f:
    f.write('\nNew line appended.')

Эксклюзивное создание файла ('x')

try:
    with open('new_file.txt', 'x', encoding='utf-8') as f:
        f.write('Content for the new file.')
        print('Файл успешно создан!')
except FileExistsError:
    print('Файл уже существует!')

Работа с бинарными файлами ('rb', 'wb')

# Чтение бинарного файла
with open('image.jpg', 'rb') as f:
    image_data = f.read()

# Запись бинарного файла
with open('copy_image.jpg', 'wb') as f:
    f.write(image_data)

Одновременное чтение и запись ('r+', 'w+')

# Режим r+ - файл должен существовать
with open('file.txt', 'r+', encoding='utf-8') as f:
    content = f.read()
    f.write('Additional text')

# Режим w+ - файл создается, если не существует
with open('new_file.txt', 'w+', encoding='utf-8') as f:
    f.write('Initial content')
    f.seek(0)  # Перемещаем указатель на начало файла
    content = f.read()

Управление файлами с помощью модуля shutil

Копирование файлов

import shutil

# Копирование файла
shutil.copy('исходный_файл.txt', 'новый_файл.txt')

# Копирование файла с сохранением метаданных
shutil.copy2('исходный_файл.txt', 'новый_файл.txt')

# Копирование всего дерева каталогов
shutil.copytree('исходная_папка', 'целевая_папка')

Перемещение и переименование файлов

import os
import shutil

# Переименование файла
os.rename('старое_имя.txt', 'новое_имя.txt')

# Перемещение файла
shutil.move('исходный_файл.txt', 'целевая_папка/новое_имя.txt')

Удаление файлов и проверка существования

Удаление файлов

import os

# Удаление файла
try:
    os.remove('файл_для_удаления.txt')
    print('Файл успешно удален')
except FileNotFoundError:
    print('Файл не найден')
except PermissionError:
    print('Недостаточно прав для удаления файла')

Проверка существования файла

import os.path

# Проверка существования файла
if os.path.exists('файл.txt'):
    print('Файл существует')
else:
    print('Файл не существует')

# Проверка, является ли путь файлом
if os.path.isfile('файл.txt'):
    print('Это файл')

# Проверка, является ли путь директорией
if os.path.isdir('папка'):
    print('Это директория')

Поиск файлов

Поиск файлов по расширению или имени

import glob
import os

# Поиск файлов с расширением ".txt"
txt_files = glob.glob('*.txt')
print('Найденные txt файлы:', txt_files)

# Поиск файлов в подпапках
all_txt_files = glob.glob('**/*.txt', recursive=True)

# Поиск файлов с помощью os.listdir()
files_in_directory = [f for f in os.listdir('.') if f.endswith('.txt')]

Получение информации о файле

import os.path
import time

# Получение размера файла в байтах
size = os.path.getsize('файл.txt')
print(f'Размер файла: {size} байт')

# Получение времени последнего доступа к файлу
atime = os.path.getatime('файл.txt')
print(f'Последний доступ: {time.ctime(atime)}')

# Получение времени последнего изменения файла
mtime = os.path.getmtime('файл.txt')
print(f'Последнее изменение: {time.ctime(mtime)}')

# Получение абсолютного пути к файлу
abs_path = os.path.abspath('файл.txt')
print(f'Абсолютный путь: {abs_path}')

Обработка ошибок при работе с файлами

При работе с файлами важно предусматривать обработку возможных ошибок:

import os

def safe_file_operation(filename):
    try:
        with open(filename, 'r', encoding='utf-8') as f:
            content = f.read()
            return content
    except FileNotFoundError:
        print(f'Файл {filename} не найден')
    except PermissionError:
        print(f'Недостаточно прав для чтения файла {filename}')
    except UnicodeDecodeError:
        print(f'Ошибка кодировки при чтении файла {filename}')
    except Exception as e:
        print(f'Неожиданная ошибка: {e}')
    return None

Лучшие практики работы с файлами

  1. Всегда используйте контекстный менеджер with для автоматического закрытия файлов
  2. Указывайте кодировку при работе с текстовыми файлами (обычно encoding='utf-8')
  3. Обрабатывайте исключения для предотвращения аварийного завершения программы
  4. Проверяйте существование файлов перед операциями чтения
  5. Используйте соответствующие модули (shutil для копирования, os для базовых операций)

Работа с файлами в Python предоставляет мощные возможности для управления данными. Правильное использование режимов открытия файлов и обработка исключений помогут создать надежные и эффективные программы.

 

категории

  • Введение в Python
  • Основы программирования на Python
  • Управляющие конструкции
  • Структуры данных
  • Функции и модули
  • Обработка исключений
  • Работа с файлами и потоками
  • файловая система
  • Объектно-ориентированное программирование (ООП)
  • Регулярные выражения
  • Дополнительные темы
  • Общая база питона