Как удалить файл в Python: полное руководство с примерами

Раздел: Ввод-вывод и файловая система -> Файловый ввод-вывод

Удаление файлов в Python: основные подходы

Операция удаления файла является одной из базовых при работе с файловой системой. В Python существует несколько способов выполнения этой задачи, каждый из которых подходит для определённых сценариев. Ниже рассмотрены основные варианты с примерами кода и разбором типичных проблем.

Как выполнить удаление файла с помощью os.remove()?

Модуль os предоставляет функцию os.remove() для удаления файла по указанному пути. Это наиболее прямой и часто используемый способ.

import os

file_path = 'example.txt'
os.remove(file_path)
print('Файл успешно удален')

ввод программ на python (ввод данных в программе python)

Пояснение: сначала импортируется модуль os, затем переменной file_path присваивается строка с именем файла (или полный путь). Вызов os.remove(file_path) удаляет файл. Если файл не существует, будет возбуждено исключение FileNotFoundError.

Возможные проблемы:

  • Файл не найден – возникает FileNotFoundError.
  • Недостаточно прав – PermissionError.
  • Файл используется другим процессом – также PermissionError.

Каким образом удалить файл через os.unlink()?

Функция os.unlink() является синонимом os.remove() и выполняет ту же операцию. Выбор между ними зависит от личных предпочтений или требований стиля кода.

import os

os.unlink('temp_data.txt')

Python file io (ввод-вывод файлов в python)

Работает идентично: удаляет файл, если он существует, иначе выбрасывает исключение.

Как использовать модуль pathlib для удаления файла?

Модуль pathlib предлагает объектно-ориентированный подход к работе с путями. Метод unlink() у объекта Path удаляет файл.

from pathlib import Path

file = Path('notes.txt')
if file.exists():
    file.unlink()
    print('Файл удален')
else:
    print('Файл не существует')

Python temp files (временные файлы в python)

Преимущество: не нужно импортировать отдельно модуль os, код выглядит более современно и читаемо.

Типичная ошибка: попытка удалить каталог тем же методом – unlink() предназначен только для файлов. Для каталогов используйте rmdir() или shutil.rmtree().

Как выполнить удаление файла с проверкой существования?

Чтобы избежать исключения при отсутствии файла, перед удалением проверяют его наличие. Самый надёжный способ – обработать исключение, но можно использовать условие.

import os

file_path = 'test.txt'
if os.path.exists(file_path):
    os.remove(file_path)
    print('Файл удален')
else:
    print('Файла нет')

Python index files (индексация файлов в python)

Однако между проверкой и удалением файл может быть удалён другим процессом – поэтому предпочтительнее использовать конструкцию try-except.

try:
    os.remove('report.txt')
except FileNotFoundError:
    print('Файл не найден, удаление не требуется')

File python class (класс для работы с файлами в python)

Как удалить несколько файлов по маске (например, все .log)?

Для удаления группы файлов, соответствующих шаблону, удобно комбинировать glob с os.remove.

import os
import glob

for file_name in glob.glob('*.log'):
    os.remove(file_name)
    print(f'Удален {file_name}')

Python file utf 8 (кодировка utf-8 для файлов в python)

Или с использованием pathlib:

from pathlib import Path

for file in Path('.').glob('*.log'):
    file.unlink()
    print(f'Удален {file.name}')

Проблема: если файл занят или недоступен, цикл прерывается. Рекомендуется оборачивать вызов в try-except внутри цикла.

- Python log file (логирование в файл в python)
- Python file methods (методы работы с файлами в python)
- File models in python (модели файлов в python)

Расширенные примеры удаления файлов

Пример 1. Удаление файла с обработкой всех ошибок и логированием

Пример
import os
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s')

def safe_delete(file_path):
    try:
        os.remove(file_path)
        logging.info(f'Файл {file_path} удален')
    except FileNotFoundError:
        logging.warning(f'Файл {file_path} не найден')
    except PermissionError as e:
        logging.error(f'Нет прав на удаление {file_path}: {e}')
    except Exception as e:
        logging.error(f'Неожиданная ошибка при удалении {file_path}: {e}')

safe_delete('data.csv')
safe_delete('nonexistent.txt')
safe_delete('/etc/protected_file')
2025-04-11 10:00:00,000 - Файл data.csv удален
2025-04-11 10:00:00,001 - Файл nonexistent.txt не найден
2025-04-11 10:00:00,002 - Нет прав на удаление /etc/protected_file: [Errno 13] Permission denied

Пример 2. Удаление всех файлов заданного расширения с повторными попытками при блокировке

Пример
import os
import time
import glob

def delete_with_retry(file_path, max_retries=3, delay=0.5):
    for attempt in range(max_retries):
        try:
            os.remove(file_path)
            return True
        except PermissionError:
            if attempt < max_retries - 1:
                time.sleep(delay)
            else:
                print(f'Не удалось удалить {file_path} после {max_retries} попыток')
                return False
    return False

for log_file in glob.glob('*.log'):
    if delete_with_retry(log_file):
        print(f'{log_file} удален')
    else:
        print(f'{log_file} не удален')
server.log удален
access.log не удален

Пример 3. Удаление файлов рекурсивно во всех поддиректориях (с использованием os.walk)

Пример
import os

for root, dirs, files in os.walk('project', topdown=False):
    for file in files:
        if file.endswith('.tmp'):
            full_path = os.path.join(root, file)
            try:
                os.remove(full_path)
                print(f'Удален {full_path}')
            except Exception as e:
                print(f'Ошибка при удалении {full_path}: {e}')
Удален project/subdir/cache.tmp
Удален project/backup/log.tmp

Пример 4. Использование pathlib для удаления файла с проверкой прав доступа

Пример
from pathlib import Path
import os

file_path = Path('secret.txt')
if file_path.exists() and os.access(file_path, os.W_OK):
    file_path.unlink()
    print('Файл удален')
else:
    print('Файл недоступен для удаления')
Файл удален

Удаление файла с помощью os.remove() в Python - comments

En
Python delete file (python)