Python удалить файл windows

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

Эта статья предназначена как раз для начинающих разработчиков. В ней описаны 8 крайне важных команд для работы с файлами, папками и файловой системой в целом. Все примеры из этой статьи размещены в Google Colab Notebook (ссылка на ресурс — в конце статьи).

Показать текущий каталог

Самая простая и вместе с тем одна из самых важных команд для Python-разработчика. Она нужна потому, что чаще всего разработчики имеют дело с относительными путями. Но в некоторых случаях важно знать, где мы находимся.

Относительный путь хорош тем, что работает для всех пользователей, с любыми системами, количеством дисков и так далее.

Так вот, для того чтобы показать текущий каталог, нужна встроенная в Python OS-библиотека:

import os
os.getcwd()

Ее легко запомнить, так что лучше выучить один раз, чем постоянно гуглить. Это здорово экономит время.

Имейте в виду, что я использую Google Colab, так что путь /content является абсолютным.

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

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

Функция os.path.exists () принимает аргумент строкового типа, который может быть либо именем каталога, либо файлом.

В случае с Google Colab при каждом запуске создается папка sample_data. Давайте проверим, существует ли такой каталог. Для этого подойдет следующий код:

os.path.exists('sample_data')

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

os.path.exists(‘sample_data/README.md’)

Если папки или файла нет, команда возвращает false.

Объединение компонентов пути

В предыдущем примере я намеренно использовал слеш «/» для разделителя компонентов пути. В принципе это нормально, но не рекомендуется. Если вы хотите, чтобы ваше приложение было кроссплатформенным, такой вариант не подходит. Так, некоторые старые версии ОС Windows распознают только слеш «\» в качестве разделителя.

Но не переживайте, Python прекрасно решает эту проблему благодаря функции os.path.join (). Давайте перепишем вариант из примера в предыдущем пункте, используя эту функцию:

os.path.exists(os.path.join('sample_data', 'README.md'))

Создание директории

Ну а теперь самое время создать директорию с именем test_dir внутри рабочей директории. Для этого можно использовать функцию
os.mkdir():

os.mkdir('test_dir')

Давайте посмотрим, как это работает на практике.

Если же мы попытаемся создать каталог, который уже существует, то получим исключение.

Именно поэтому рекомендуется всегда проверять наличие каталога с определенным названием перед созданием нового:

if not os.path.exists('test_dir'):
    os.mkdir('test_dir')

Еще один совет по созданию каталогов. Иногда нам нужно создать подкаталоги с уровнем вложенности 2 или более. Если мы все еще используем os.mkdir (), нам нужно будет сделать это несколько раз. В этом случае мы можем использовать os.makedirs (). Эта функция создаст все промежуточные каталоги так же, как флаг mkdir -p в системе Linux:

os.makedirs(os.path.join('test_dir', 'level_1', 'level_2', 'level_3'))

Вот что получается в результате.

Показываем содержимое директории

Еще одна полезная команда — os.listdir(). Она показывает все содержимое каталога.

Команда отличается от os.walk (), где последний рекурсивно показывает все, что находится «под» каталогом. os.listdir () намного проще в использовании, потому что просто возвращает список содержимого:

os.listdir('sample_data')

В некоторых случаях нужно что-то более продвинутое — например, поиск всех CSV-файлов в каталоге «sample_data». В этом случае самый простой способ — использовать встроенную библиотеку glob:

from glob import globlist(glob(os.path.join('sample_data', '*.csv')))

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

Самое время попробовать переместить файлы из одной папки в другую. Рекомендованный способ — еще одна встроенная библиотека shutil.
Сейчас попробуем переместить все CSV-файлы из директории «sample_data» в директорию «test_dir». Ниже — пример кода для выполнения этой операции:

import shutilfor file in list(glob(os.path.join('sample_data', '*.csv'))):
    shutil.move(file, 'test_dir')

Кстати, есть два способа выполнить задуманное. Например, мы можем использовать библиотеку OS, если не хочется импортировать дополнительные библиотеки. Как os.rename, так и os.replace подходят для решения задачи.

Но обе они недостаточно «умные», чтобы позволить перемесить файлы в каталог.

Чтобы все это работало, нужно явно указать имя файла в месте назначения. Ниже — код, который это позволяет сделать:

for file in list(glob(os.path.join('test_dir', '*.csv'))):
    os.rename(
        file,
        os.path.join(
            'sample_data',
            os.path.basename(file)
    ))

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

Другая функция, os.replace (), делает то же самое. Но разница в том, что os.replace () не зависит от платформы, тогда как os.rename () будет работать только в системе Unix / Linux.

Еще один минус — в том, что обе функции не поддерживают перемещение файлов из разных файловых систем, в отличие от shutil.

Поэтому я рекомендую использовать shutil.move () для перемещения файлов.

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

Аналогичным образом shutil подходит и для копирования файлов по уже упомянутым причинам.

Если нужно скопировать файл README.md из папки «sample_data» в папку «test_dir», поможет функция shutil.copy():

shutil.copy(
    os.path.join('sample_data', 'README.md'),
    os.path.join('test_dir')
)

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

Теперь пришел черед разобраться с процедурой удаления файлов и папок. Нам здесь снова поможет библиотека OS.

Когда нужно удалить файл, нужно воспользоваться командой os.remove():

os.remove(os.path.join('test_dir', 'README(1).md'))

Если требуется удалить каталог, на помощь приходит os.rmdir():

os.rmdir(os.path.join('test_dir', 'level_1', 'level_2', 'level_3'))

Однако он может удалить только пустой каталог. На приведенном выше скриншоте видим, что удалить можно лишь каталог level_3. Что если мы хотим рекурсивно удалить каталог level_1? В этом случае зовем на помощь shutil.

Функция shutil.rmtree() сделает все, что нужно:

shutil.rmtree(os.path.join('test_dir', 'level_1'))

Пользоваться ею нужно с осторожностью, поскольку она безвозвратно удаляет все содержимое каталога.

Собственно, на этом все. 8 важных операций по работе с файлами и каталогами в среде Python мы знаем. Что касается ссылки, о которой говорилось в анонсе, то вот она — это Google Colab Network с содержимым, готовым к запуску.

Last Updated :
14 Dec, 2023

When any large program is created, usually there are small files that we need to create to store some data that is needed for the large programs. when our program is completed, so we need to delete them. In this article, we will see how to delete a file in Python.

Methods to Delete a File in Python

  1. Python Delete File using os. remove
  2. Delete file in Python using the send2trash module
  3. Python Delete File using os.rmdir

Check if the file exists or not

Command to install OS Module:

pip3 install os

For Delete a File in Python, you can use the os.path.exists() function to check if a file exists. Here’s a simple example: Replace 'path/to/your/file.txt' with the actual path of the file you want to check. The os.path.exists() function returns True if the file exists and False otherwise. The code then prints a message based on the existence of the file.

Python3

import os

def check_file_existence(file_path):

    if os.path.exists(file_path):

        print(f'The file "{file_path}" exists.')

    else:

        print(f'The file "{file_path}" does not exist.')

file_path = 'path/to/your/file.txt'

check_file_existence(file_path)

Output :

The file "path/to/your/file.txt" does not exist.

Delete a File in Python using ‘os.remove’

We will be importing the OS library and going to use the os.remove() function to remove the desired file. 

Example 1: Delete the file from your current directory

This is the simple code to delete the file from your current directory.

Python3

import os

os.remove("starwars.txt")

Example 2: Detailed Explanation

In below code Python script prompts the user to input a filename for deletion. If the input is ‘quit’, the program exits; otherwise, it attempts to remove the specified file using `os.remove()`. A success message is then printed.

Python3

import os

print("Enter 'quit' for exiting the program")

filename = input('Enter the name of the file, \

                        that is to be deleted : ')

if filename == 'quit':

    exit()

else:

    print('\nStarting the removal of the file !')

    os.remove(filename)

    print('\nFile, ', filename, 'The file deletion \

                        is successfully completed !!')

Output: 

The desired file to be deleted: 

Python Program to delete a file

A sample run of the program 

Python Program to delete a file

When we enter the name of the file to be deleted:

Python Program to delete a file

The deletion: 

Python Program to delete a file

The Working Output: 

Python Program to delete a file

Delete a Files in Python using send2trash Module

We can use the os.walk() function to walk through a directory and delete specific files. In the example below, we will delete all ‘.txt’ files in the given directory.

Example : In this script walks through files in the directory ‘/Users/tithighosh/Documents’ using `os.walk`. For each ‘.txt’ file found, it prints its path and uses `send2trash` to move it to the system trash, avoiding permanent deletion. The script effectively trashes all ‘.txt’ files in the specified directory and its subdirectories.

Python3

import os

import send2trash

for folder, subfolders, files in os.walk('/Users/tithighosh/Documents'):

    for file in files:

        if file.endswith('.txt'):

            path = os.path.join(folder, file)

            print('deleted : ', path )

            send2trash.send2trash(path)

Output:

deleted :  /Users/tithighosh/Documents/cfile.txt
deleted :  /Users/tithighosh/Documents/e_also_big_output.txt
deleted :  /Users/tithighosh/Documents/res.txt
deleted :  /Users/tithighosh/Documents/tk.txt

Python a Delete File using os.rmdir

In the os.rmdir method removes an empty directory specified by the given path. It is important to note that if the directory contains any files or subdirectories, the method will raise an OSError. Therefore, it’s essential to ensure that the directory is empty before using this method.

Example : In this example, replace 'path/to/empty_directory' with the actual path of the empty directory you want to delete. The delete_empty_directory function attempts to remove the specified directory using os.rmdir and prints a success message if the deletion is successful

Python3

import os

def delete_empty_directory(directory_path):

    try:

        os.rmdir(directory_path)

        print(f'The directory "{directory_path}" has been successfully deleted.')

    except OSError as e:

        print(f'Error: {e}')

directory_to_delete = 'path/to/empty_directory'

delete_empty_directory(directory_to_delete)

Output :

The directory "path/to/empty_directory" has been successfully deleted.

Related Article

Delete a directory or file using Python

How to delete data from file in Python

Delete files older than N days in Python

Пройдите тест, узнайте какой профессии подходите

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

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

Для выполнения таких операций в Python существуют специальные функции, которые позволяют удалять как отдельные файлы, так и целые папки.

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

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

Для удаления файла в Python используется функция os.remove(). Она принимает один аргумент — путь к удаляемому файлу.

import os

os.remove("/путь/к/файлу.txt")

Если файл, указанный в аргументе, не существует, то будет выдана ошибка FileNotFoundError.

Удаление папки

Для удаления папки используется функция os.rmdir(). Она также принимает один аргумент — путь к удаляемой папке.

import os

os.rmdir("/путь/к/папке")

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

Если же требуется удалить папку со всем её содержимым, то в этом случае можно использовать функцию shutil.rmtree().

import shutil

shutil.rmtree("/путь/к/папке")

Эта функция удалит указанную папку вместе со всем её содержимым, даже если в ней есть другие папки и файлы.

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

На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.

Для работы с файловой системой в Python используют модули
os, os.path и shututil, а для операций с файлами – встроенные функции open(), close(), read(), readline(), write() и т. д. Прежде, чем мы перейдем
к примерам использования конкретных методов, отметим один важный момент – корректный формат пути к файлам и каталогам.

Дело в том, что Python считает некорректным стандартный
для Windows формат: если указать путь к файлу в привычном виде 'C:\Users\User\Python\letters.py', интерпретатор вернет ошибку. Лучше
всего указывать путь с помощью r-строк
или с экранированием слэшей:

        r'C:\Users\User\Python\letters.py'
'C:\\Users\\User\\Python\\letters.py'

    

Иногда также путь указывают с обратными слэшами:

        'C:/Users/User/Python/letters.py'

    

🐍🎓 Библиотека собеса по Python

🐍🧩 Библиотека задач по Python

Получение информации о файлах и директориях

Метод getcwd() возвращает
путь к текущей рабочей директории в виде строки:

        >>> import os
>>> os.getcwd()
'C:\\Users\\User\\Python'

    

С помощью метода os.listdir() можно получить список всех поддиректорий и файлов текущего рабочего каталога, при этом содержимое вложенных папок не отображается:

        >>> os.listdir()
['Data', 'lambda_functions.py', 'letters.py', 'os_methods.py', 'passw_generator.py', 'points.py', 'population.py']

    

Метод os.walk() возвращает генератор, в котором содержится
вся информация о рабочем каталоге, включая содержимое всех поддиректорий:

        >>> import os
>>> my_cwd = os.getcwd()
>>> result = os.walk(my_cwd)
>>> for i, j, k in result:
    for file in k:
        print(file)
        
lambda_functions.py
letters.py
os_methods.py
passw_generator.py
points.py
population.py
books_to_process.txt
challenge_data.txt
ledger.txt

    

Много полезных методов содержится в модуле os.path. Так можно извлечь имя файла из полного пути:

        >>> os.path.basename(r'C:\Users\User\Python\letters.py')
'letters.py'

    

А так можно получить путь к директории / файлу, в который не
включается собственно поддиректория или имя файла:

        >>> os.path.dirname(r'C:\Users\User\Python\Data')
'C:\\Users\\User\\Python'

    

Метод path.isabs() покажет, является ли
путь абсолютным или относительным:

        >>> os.path.isabs(r'C:\Users\User\Python\Data')
True
>>> os.path.isabs(r'.\Python\Data')
False
>>>

    

Метод path.isdir() возвращает True, если переданная в метод директория существует, и False – в противном случае:

        >>> os.path.isdir(r'C:\Users\User\Python\Data\Samples')
False

    

Для установления факта существования файла служит path.isfile():

        >>> os.path.isfile(r'C:\Users\User\Python\matrix_challenge.py')
False

    

Для преобразования пути в нижний регистр и нормализации слэшей используют path.normcase():

        >>> os.path.normcase('C:/Users/User/Python')
'c:\\users\\user\\python'

    

Хотя путь к файлу (директории) представляет собой строку,
создавать полный путь с помощью конкатенации считается моветоном – нужно
использовать метод os.path.join():

        # Неправильно:
my_cwd = os.getcwd()
file_name = 'my_solution.py'
path = my_cwd + '\\' + file_name

# Правильно:
path = os.path.join(my_cwd, file_name)

    

Результат:

        C:\Users\User\Python\my_solution.py
    

Операции с каталогами и файлами в Python

Для создания новых директорий служит os.mkdir(); в метод нужно передать полный путь, включающий название
нового каталога:

        import os
my_cwd = os.getcwd()
new_dir = 'Solutions'
path = os.path.join(my_cwd, new_dir)
os.mkdir(path)
print(os.listdir())

    

Результат:

        ['Data', 'lambda_functions.py', 'letters.py', 'os_methods.py', 'passw_generator.py', 'points.py', 'population.py', 'Solutions']

    

Изменить рабочую директорию можно с помощью метода os.chdir(), это аналог CLI команды cd:

        >>> import os
>>> os.getcwd()
'C:\\Users\\User\\Python'
>>> os.chdir(r'C:\Users\User\Python\Data')
>>> os.getcwd()
'C:\\Users\\User\\Python\\Data'

    

Использование os.chdir()
может привести к ошибке, если путь к переданной в метод директории указан
неправильно или не существует. Поэтому этот метод стоит использовать только с
обработкой ошибок:

        import sys, os

my_cwd = os.getcwd()
new_cwd = r'C:\Users\User\Python\MyData'

try:
    os.chdir(new_cwd)
    print(f'Изменяем рабочую директорию на {os.getcwd()}')
except:
    print(f'Произошла ошибка {sys.exc_info()}')
finally:
    print('Восстанавливаем рабочую директорию на прежнюю')
    os.chdir(my_cwd)
    print(f'Текущая рабочая директория - {os.getcwd()}')

    

Вывод:

        Произошла ошибка (<class 'FileNotFoundError'>, FileNotFoundError(2, 'Не удается найти указанный файл'), <traceback object at 0x024E9828>)
Восстанавливаем рабочую директорию на прежнюю
Текущая рабочая директория - C:\Users\User\Python

    

Python для новичков: бессрочный доступ к знаниям и поддержка экспертов

Онлайн-курс «Основы программирования на Python» от Proglib academy предлагает 32 практических урока с персональной обратной связью от экспертов, где вы создадите 4 реальных проекта для портфолио и получите все необходимые навыки для старта карьеры в IT.

Создание директорий в Python

Для создания новых каталогов используют два метода:

  • os.mkdir() – аналог CLI команды mkdir; создает новую папку по указанному пути, при условии, что все указанные промежуточные (вложенные) директории уже существуют.
  • os.makedirs() – аналог CLI команды mkdir -p dir1\dir2; помимо создания целевой папки, создает все промежуточные директории, если они не существуют.

Пример использования os.mkdir():

        import os
new_dir = 'NewProjects'
parent_dir = r 'C:\Users\User\Python'
path = os.path.join(parent_dir, new_dir)
os.mkdir(path)
print(f'Директория {new_dir} создана: {os.listdir()}')

    

Результат:

        Директория NewProjects создана: ['Data', 'lambda_functions.py', 'letters.py', 'NewProjects', 'os_methods.py', 'Other', 'passw_generator.py', 'points.py', 'population.py', 'Solutions']

    

Пример использования makedirs():

        import os
new_dir = 'Django'
parent_dir = r'C:\Users\User\Python\Other\Projects\Modules'
path = os.path.join(parent_dir, new_dir)
os.makedirs(path)
print(f'Директория {new_dir} создана по адресу {os.path.dirname(path)}')

    

Результат:

        Директория Django создана по адресу C:\Users\User\Python\Other\Projects\Modules

    

Копирование файлов и директорий в Python

Для копирования файлов используют метод shutil.copy2(), который принимает два аргумента
– источник файла и директорию, в которую нужно скопировать файл:

        import os
import shutil
dest_path = r'C:\Users\User\Python\Data'
source_path = r'C:\Users\User\lambda_exp.txt'
print(f'Файлы в директории {os.path.basename(dest_path)} до копирования файла \
{os.path.basename(source_path)}: {os.listdir(dest_path)}\n')
copy_file = shutil.copy2(source_path, dest_path)
print(f'Файлы в директории {os.path.basename(dest_path)} после копирования файла \
{os.path.basename(source_path)}: {os.listdir(dest_path)}')

    

Вывод:

        Файлы в директории Data до копирования файла lambda_exp.txt: ['books_to_process.txt', 'challenge_data.txt', 'ledger.txt']
Файлы в директории Data после копирования файла lambda_exp.txt: ['books_to_process.txt', 'challenge_data.txt', 'lambda_exp.txt', 'ledger.txt']

    

Помимо метода shutil.copy2(),
для копирования файлов можно пользоваться методом shutil.copy(). Разница между
этими двумя методами в том, что в отличие от shutil.copy2(),
метод shutil.copy() копирует только
содержимое файла, но не метаданные:

        import os
import shutil
dest_path = r'C:\Users\User\Python\Data'
source_path = r'C:\Users\User\logfile.txt'
print(f'Файлы в директории {os.path.basename(dest_path)} до копирования файла \
{os.path.basename(source_path)}: {os.listdir(dest_path)}\n')
print(f'Метаданные: {os.stat(source_path)}\n')
copy_file = shutil.copy(source_path, dest_path)
print(f'Файлы в директории {os.path.basename(dest_path)} после копирования файла \
{os.path.basename(source_path)}: {os.listdir(dest_path)}\n')
print(f'Метаданные: {os.stat(dest_path)}\n')

    

Вывод:

        Файлы в директории Data до копирования файла logfile.txt: ['books_to_process.txt', 'challenge_data.txt', 'lambda_exp.txt']
Метаданные: os.stat_result(st_mode=33206, st_ino=18014398509552989, st_dev=4236505663, st_nlink=1, st_uid=0, st_gid=0, st_size=455, st_atime=1629682315, st_mtime=1629681887, st_ctime=1629682315)
Файлы в директории Data после копирования файла logfile.txt: ['books_to_process.txt', 'challenge_data.txt', 'lambda_exp.txt', 'logfile.txt']
Метаданные: os.stat_result(st_mode=16895, st_ino=11821949021901021, st_dev=4236505663, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1675257729, st_mtime=1675257729, st_ctime=1675084801)

    

Все содержимое каталога сразу можно скопировать с помощью shutil.copytree():

        import os
import shutil
dest_path = r'C:\Users\User\Python\Other\Files'
source_path = r'C:\Users\User\Python\Other\Scripts'
print(f'Содержимое директории {os.path.basename(dest_path)} до копирования каталога \
{os.path.basename(source_path)}: {os.listdir(dest_path)}\n')
copy_dir = shutil.copytree(source_path, dest_path, dirs_exist_ok=True)
print(f'Содержимое директории {os.path.basename(dest_path)} после копирования \
{os.path.basename(source_path)}: {os.listdir(dest_path)}\n')

    

Вывод:

        Содержимое директории Files до копирования каталога Scripts: []
Содержимое директории Files после копирования Scripts: ['progression.py', 'sitemap_generator.py']

    

Перемещение файлов и директорий

Для перемещения файлов используют метод shutil.move():

        import os
import shutil
dest_path = r'C:\Users\User\Python\Other\Scripts'
source_path = r'C:\Users\User\Desktop\sitemap_generator.py'
print(f'Содержимое директории {os.path.basename(dest_path)} до копирования каталога \
{os.path.basename(source_path)}: {os.listdir(dest_path)}\n')
copy_dir = shutil.move(source_path, dest_path)
print(f'Содержимое директории {os.path.basename(dest_path)} после копирования \
{os.path.basename(source_path)}: {os.listdir(dest_path)}\n')

    

Вывод:

        Содержимое директории Scripts до копирования каталога sitemap_generator.py: ['progression.py', 'wiki_scraping.py']
Содержимое директории Scripts после копирования sitemap_generator.py: ['progression.py', 'sitemap_generator.py', 'wiki_scraping.py']

    

Для перемещения содержимого всей директории в качестве
функции указывают shutil.copytree():

        copy_dir = shutil.move(source_path, dest_path, copy_function = shutil.copytree)
    

Удаление файлов и директорий

Для удаления директории вместе со всеми файлами используют shutil.rmtree():

        import os
import shutil
dir_path = r'C:\Users\User\Python\Other'
remove_dir = 'Files'
path = os.path.join(dir_path, remove_dir)
print(f'Содержимое директории {os.path.basename(dir_path)} до удаления каталога \
{remove_dir}: {os.listdir(dir_path)}\n')
shutil.rmtree(path)
print(f'Содержимое директории {os.path.basename(dir_path)} после удаления \
{remove_dir}: {os.listdir(dir_path)}\n')

    

Вывод:

        Содержимое директории Other до удаления каталога Files: ['Files', 'Projects']
Содержимое директории Other после удаления Files: ['Projects']

    

Другой метод для удаления пустых директорий – os.rmdir():

        import os
import shutil
dir_path = r'C:\Users\User\Python\Other'
remove_dir = 'Scripts'
path = os.path.join(dir_path, remove_dir)
print(f'Содержимое директории {os.path.basename(dir_path)} до удаления каталога \
{remove_dir}: {os.listdir(dir_path)}\n')
os.rmdir(path)
print(f'Содержимое директории {os.path.basename(dir_path)} после удаления \
{remove_dir}: {os.listdir(dir_path)}\n')

    

Вывод:

        Содержимое директории Other до удаления каталога Scripts: ['Projects', 'Scripts']
Содержимое директории Other после удаления Scripts: ['Projects']

    

Очевидный минус метода os.rmdir()
в том, что он работает только на пустых директориях – если поместить в каталог Scripts хотя бы один файл,
удалить его с os.rmdir() уже не получится:

        Traceback (most recent call last):
  File "C:\Users\User\Python\os_methods.py", line 8, in <module>
    os.rmdir(path)
OSError: [WinError 145] Папка не пуста: 'C:\\Users\\User\\Python\\Other\\Scripts'

    

Для удаления файлов используют метод os.remove():

        import os
import shutil
dir_path = r'C:\Users\User\Python\Other\Scripts'
remove_file = 'tetris_game.py'
path = os.path.join(dir_path, remove_file)
print(f'Содержимое директории {os.path.basename(dir_path)} до удаления файла \
{remove_file}: {os.listdir(dir_path)}\n')
os.remove(path)
print(f'Содержимое директории {os.path.basename(dir_path)} после удаления \
{remove_file}: {os.listdir(dir_path)}\n')

    

Вывод:

        Содержимое директории Scripts до удаления файла tetris_game.py: ['tetris_game.py']
Содержимое директории Scripts после удаления tetris_game.py: []

    

Работа с файлами в Python

Открыть файл для проведения каких-либо манипуляций можно
двумя способами:

  • С помощью функции open() – в этом случае после завершения работы нужно будет закрыть файл с помощью close():
        f = open('task.txt', 'a', encoding='utf-8')
f.write('\n2) Написать модуль авторизации')
f.close()

    
  • С использованием менеджера контекста with, который автоматически и самостоятельно закроет файл, когда надобность в нем отпадет:
        with open('task.txt', 'a', encoding='utf-8') as f:
    f.write('\n2) Написать модуль авторизации')

    

Типы файлов

В Python все файлы делятся на:

  • Текстовые 't'
  • Бинарные (двоичные) 'b'

Если никакой определенный тип файла не указан, по умолчанию Python считает, что пользователь работает с текстовыми файлами. Поэтому для работы с изображениями, мультимедийными файлами и pdf, например, следует указывать, что тип файла относится к 'b'.

Режимы доступа и записи

‘r’ Открывает файл для чтения. Возвращает ошибку, если указанный файл не существует.
‘w’ Открывает файл для записи, причем перезаписывает содержимое, если оно есть. Создает файл, если он не существует.
‘a’ Открывает файл для записи и добавляет новую информацию, не перезаписывая существующую. Создает файл, если он не существует.
‘w+’ Открывает файл для чтения и записи, перезаписывает содержимое.
‘r+’ Открывает файл для чтения и дополнения, не перезаписывает содержимое.
‘x’ Создает новый пустой файл. Возвращает ошибку, если файл с таким именем уже существует.

Примечание: для операций с двоичными файлами к указанным
параметрам нужно добавлять b,
то есть вместо 'r'
должно быть 'rb', а
вместо 'w+''wb+'.

Методы работы с файлами

Для чтения данных используют read(). Метод read() по умолчанию возвращает все содержимое файла:

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

    

Вывод:

        1. "Террор", Дэн Симмонс
2. "Она же Грейс", Маргарет Этвуд
3. "Облачный атлас", Дэвид Митчелл
4. "Искупление", Иэн Макьюэн
5. "Госпожа Бовари", Гюстав Флобер

    

При необходимости объем выводимой информации можно ограничить
определенным количеством символов:

        with open('movies.txt', 'r', encoding='utf-8') as f:
    info = f.read(15)
print(info)

    

Вывод:

        1. "Из машины"
    

Метод readline()
позволяет считывать информацию из текстовых файлов построчно:

        with open('books.txt', 'r', encoding='utf-8') as f:
    info = f.readline()
print(info)

    

Вывод:

        1. "Террор", Дэн Симмонс
    

Для получения всех строк файла используют метод readlines(),
который возвращает содержимое в виде списка – вместе со всеми спецсимволами:

        with open('books.txt', 'r', encoding='utf-8') as f:
    info = f.readlines()
print(info)

    

Вывод:

        ['1. "Террор", Дэн Симмонс\n', '2. "Она же Грейс", Маргарет Этвуд\n', '3. "Облачный атлас", Дэвид Митчелл\n', '4. "Искупление", Иэн Макьюэн\n', '5. "Госпожа Бовари", Гюстав Флобер']
    

Чтобы избавиться от лишних пробелов, символа новой строки (и любых других
спецсимволов), используют методы rstrip(), lstrip()
или strip():

        with open('books.txt', 'r', encoding='utf-8-sig') as f:
    info = [line.strip() for line in f.readlines()]
print(info)

    

Вывод:

        ['1. "Террор", Дэн Симмонс', '2. "Она же Грейс", Маргарет Этвуд', '3. "Облачный атлас", Дэвид Митчелл', '4. "Искупление", Иэн Макьюэн', '5. "Госпожа Бовари", Гюстав Флобер']
    

Для записи информации в файл используют метод write():

        with open('books.txt', 'a', encoding='utf-8') as f:
    f.write('\n6. "Война и мир", Лев Толстой\n')

    

Или writelines():

        with open('books.txt', 'a', encoding='utf-8') as f:
    f.writelines(['7. "Преступление и наказание", Федор Достоевский\n',
                 '8. "Мизери", Стивен Кинг\n',
                  '9. "Джейн Эйр", Шарлотта Бронте\n'])

    

Кроме того, записывать данные в файл можно с помощью print():

        with open('crm_log.txt', 'a', encoding='utf-8') as file:
    print('\nСергей Леонов, 11:18, 12:23', file=file)
    

Чтобы узнать текущую позицию курсора в файле, используют метод tell():

        with open('books.txt', 'r', encoding='utf-8-sig') as f:
    f.readline()
    f.read(5)
    print(f.tell())

    

Вывод:

        51
    

Для считывания данных из определенной позиции используют seek():

        with open('movies.txt', 'r', encoding='utf-8') as f:
    f.seek(53)
    print(f.read())

    

Вывод:

        3. "Дракула Брэма Стокера"
    

Практика

Задание 1

Имеется файл books.txt, содержащий следующую
информацию:

        1. "Террор", Дэн Симмонс
2. "Она же Грейс", Маргарет Этвуд
3. "Облачный атлас", Дэвид Митчелл
4. "Искупление", Иэн Макьюэн
5. "Госпожа Бовари", Гюстав Флобер
6. "Война и мир", Лев Толстой
7. "Преступление и наказание", Федор Достоевский
8. "Мизери", Стивен Кинг
9. "Джейн Эйр", Шарлотта Бронте

    

Напишите программу, которая выводит первые 3 строки файла.

Решение:

        with open('books.txt', 'r', encoding='utf-8') as file:
    for i in range(3):
        line = file.readline().strip()
        print(line)

    

Задание 2

Напишите программу, которая получает от пользователя имя
файла и возвращает следующие данные о его содержимом:

  • количество строк;
  • количество слов;
  • число символов без пробелов и точек.

Пример ввода:

        series.txt
    

Содержимое файла:

        1. Последнее королевство 2015
2. Рим 2005
3. Версаль 2015
4. Тюдоры 2007
5. Террор 2018
6. Человек в высоком замке 2015
7. Белая королева 2013
8. Братья по оружию 2001
9. Медичи 2016
10. Спартак 2010

    

Вывод:

        Количество строк в файле series.txt: 10
Количество слов: 17
Число символов: 153

    

Решение:

        filename = input()
lines, words, symbols = 0, 0, 0
with open(filename, 'r', encoding='utf-8') as file:
    for i in file:
        lines += 1
        words += len([w for w in i.split() if w.isalpha()])
        symbols += len([s for s in i if s.isalnum()])
print(f'Количество строк в файле {filename}: {lines}\n'
      f'Количество слов: {words}\n'
      f'Число символов: {symbols}\n'
     )

    

Задание 3

Напишите программу, которая находит самое длинное слово в
списке книг из первого задания.

Ожидаемый результат:

        Преступление
    

Решение:

        with open('books.txt', 'r', encoding='utf-8') as file:
    words = file.read().replace('"', '').split()
    result = [w for w in words if len(w) == len(max(words, key=len))]
 
print(*result)  

    

Задание 4

Имеется файл fruit.txt со
следующим содержимым:

        Апельсин маракуйя папайя айва Яблоко
апельсин яблоко ананас банан персик Слива
Банан груша слива виноград авокадо Цитрон
Слива Груша яблоко мандарин цитрон
лимон Лайм апельсин ананас персик айва 
Хурма киви хурма манго авокадо лайм
Нектарин Инжир гранат Папайя Гранат

    

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

Вывод:

        Названия этих фруктов встречаются в тексте:
"апельсин" - 3 раз(а)
"маракуйя" - 1 раз(а)
"папайя" - 2 раз(а)
"айва" - 2 раз(а)
"яблоко" - 3 раз(а)
"ананас" - 2 раз(а)
"банан" - 2 раз(а)
"персик" - 2 раз(а)
"слива" - 3 раз(а)
"груша" - 2 раз(а)
"виноград" - 1 раз(а)
"авокадо" - 2 раз(а)
"цитрон" - 2 раз(а)
"мандарин" - 1 раз(а)
"лимон" - 1 раз(а)
"лайм" - 2 раз(а)
"хурма" - 2 раз(а)
"киви" - 1 раз(а)
"манго" - 1 раз(а)
"нектарин" - 1 раз(а)
"инжир" - 1 раз(а)
"гранат" - 2 раз(а)
    

Решение:

        with open('fruit.txt', 'r', encoding='utf-8') as file:
    result = {}
    for line in file:
        words = line.strip().lower().split()
        for w in words:
            result[w] = result.get(w, 0) + 1
print(f'Названия этих фруктов встречаются в тексте:')
for k, v in result.items():
    print(f'"{k}" - {v} раз(а)'
    

Задание 5

Имеются два файла, first.txt и second.txt. В первом файле
перечислены имена, во втором – должности:

Содержимое файла first.txt

        Сергей Ковалев
Ирина Егорова
Никита Степанов
Марина Арефьева
Кирилл Евстегнеев
Елена Моисеева

    

Файл second.txt

        мидл разработчик
девопс
тимлид
сеньор разработчик
продакт-менеджер
дизайнер

    

Напишите программу, которая открывает оба файла и выводит
сведения о сотрудниках в следующем формате:

        Сотрудник Сергей Ковалев, должность - мидл разработчик
Сотрудник Ирина Егорова, должность - девопс
Сотрудник Никита Степанов, должность - тимлид
Сотрудник Марина Арефьева, должность - сеньор разработчик
Сотрудник Кирилл Евстегнеев, должность - продакт-менеджер
Сотрудник Елена Моисеева, должность – дизайнер

    

Решение:

        with open('first.txt', 'r', encoding='utf-8') as file1, \
open('second.txt', 'r', encoding='utf-8') as file2:
    for line_x, line_y in zip(file1, file2):
        print(f'Сотрудник {line_x.strip()}, должность - {line_y.strip()}')

    

Задание 6

Напишите программу, которая:

  • генерирует коды букв русского алфавита от а до я;
  • вставляет в полученный список код ё;
  • записывает полный алфавит (строчный и прописной варианты каждой буквы) в столбик в файл alphabet.txt.

Содержимое файла после выполнения программы:

        Аа
Бб
Вв
Гг
Дд
Ее
Ёё
Жж
Зз
Ии
Йй
Кк
Лл
Мм
Нн
Оо
Пп
Рр
Сс
Тт
Уу
Фф
Хх
Цц
Чч
Шш
Щщ
Ъъ
Ыы
Ьь
Ээ
Юю
Яя

    

Решение:

        alpha = [i for i in range(ord('а'), ord('я') + 1)]
alpha.insert(6, 1105)
with open('alphabet.txt', 'w', encoding='utf-8') as file:
    for i in alpha:
        file.write(chr(i).upper() + chr(i) + '\n')

    

Задание 7

Сведения о доходах и расходах компании хранятся в двух
файлах, income.txt и
outcome.txt. Напишите программу для
подсчета прибыли компании.

Пример файла income.txt:

        RUB100000
RUB200000
RUB200000
RUB500000
RUB600000
RUB100000
RUB700000

    

Пример файла outcome.txt:

        -RUB1000
-RUB2000
-RUB50000
-RUB200000
-RUB10000
-RUB5000
-RUB6000
-RUB10000
-RUB19000
-RUB7000

    

Ожидаемый результат:

        Прибыль за прошлый месяц: 2090000 RUB

    

Решение:

        income, outcome = 0, 0
with open('income.txt', 'r', encoding='utf-8') as file1, \
open('outcome.txt', 'r', encoding='utf-8') as file2:
    for line in file1:
        num = line.strip()[3:]
        income += int(num)

    for line in file2:
        num = line.strip()[4:]
        outcome += int(num)
print(f'Прибыль за прошлый месяц: {income - outcome} RUB')    

    

Задание 8

Напишите программу, которая считывает сведения об
успеваемости по основным предметам из файла grades.txt,
и определяет, кто из студентов имеет средний балл >= 4.5.

Пример файла grades.txt:

        Арефьева И. 5 5 4 4
Богданов С. 5 5 3 4
Гаврилов Е. 4 4 3 3
Егорова А.  3 3 3 4
Семенова Е. 4 3 3 4
Хворостов И. 5 4 5 5

    

Ожидаемый результат:

        Арефьева И., средний балл: 4.50
Хворостов И., средний балл: 4.75

    

Решение:

        result = {}
with open('grades.txt', 'r', encoding='utf-8') as file1:
    for line in file1:
        l = line.strip().split()
        grades = [int(i) for i in l[-4:]]
        aver_grade = sum(grades) / len(grades)
        if aver_grade >= 4.5:
            result[l[0] + ' ' + l[1]] = aver_grade
for student, aver_grade in result.items():
    print(f'{student}, средний балл: {aver_grade:.2f}')  

    

Задание 9

Напишите программу, которая получает от пользователя
название файла с информацией на русском языке, и выполняет транслитерацию
текста в соответствии с приведенным ниже словарем. Результат нужно записать в
файл result.txt.

Словарь:

        translit = {'а': 'a', 'к': 'k', 'х': 'h', 'б': 'b', 'л': 'l', 'ц': 'c', 'в': 'v', 'м': 'm', 'ч': 'ch', 'г': 'g', 'н': 'n',
     'ш': 'sh', 'д': 'd', 'о': 'o', 'щ': 'shh', 'е': 'e', 'п': 'p', 'ъ': '*', 'ё': 'jo', 'р': 'r', 'ы': 'y', 'ж': 'zh',
     'с': 's', 'ь': "'", 'з': 'z', 'т': 't', 'э': 'je', 'и': 'i', 'у': 'u', 'ю': 'ju', 'й': 'j', 'ф': 'f', 'я': 'ya',
     'А': 'A', 'К': 'K', 'Х': 'H', 'Б': 'B', 'Л': 'L', 'Ц': 'C', 'В': 'V', 'М': 'M', 'Ч': 'Ch', 'Г': 'G', 'Н': 'N',
     'Ш': 'Sh', 'Д': 'D', 'О': 'O', 'Щ': 'Shh', 'Е': 'E', 'П': 'P', 'Ъ': '*', 'Ё': 'Jo', 'Р': 'R', 'Ы': 'Y', 'Ж': 'Zh',
     'С': 'S', 'Ь': "'", 'З': 'Z', 'Т': 'T', 'Э': 'Je', 'И': 'I', 'У': 'U', 'Ю': 'Ju', 'Й': 'J', 'Ф': 'F', 'Я': 'Ya'}

    

Пример русского текста:

        Python — это язык программирования, который широко используется в интернет-приложениях, разработке программного обеспечения, науке о данных и машинном обучении (ML). Разработчики используют Python, потому что он эффективен, прост в изучении и работает на разных платформах.

    

Ожидаемое содержимое result.txt:

        Python — jeto yazyk programmirovaniya, kotoryj shiroko ispol'zuetsya v internet-prilozheniyah, razrabotke programmnogo obespecheniya, nauke o dannyh i mashinnom obuchenii (ML). Razrabotchiki ispol'zujut Python, potomu chto on jeffektiven, prost v izuchenii i rabotaet na raznyh platformah.

    

Решение:

        translit = {'а': 'a', 'к': 'k', 'х': 'h', 'б': 'b', 'л': 'l', 'ц': 'c', 'в': 'v', 'м': 'm', 'ч': 'ch', 'г': 'g', 'н': 'n',
     'ш': 'sh', 'д': 'd', 'о': 'o', 'щ': 'shh', 'е': 'e', 'п': 'p', 'ъ': '*', 'ё': 'jo', 'р': 'r', 'ы': 'y', 'ж': 'zh',
     'с': 's', 'ь': "'", 'з': 'z', 'т': 't', 'э': 'je', 'и': 'i', 'у': 'u', 'ю': 'ju', 'й': 'j', 'ф': 'f', 'я': 'ya',
     'А': 'A', 'К': 'K', 'Х': 'H', 'Б': 'B', 'Л': 'L', 'Ц': 'C', 'В': 'V', 'М': 'M', 'Ч': 'Ch', 'Г': 'G', 'Н': 'N',
     'Ш': 'Sh', 'Д': 'D', 'О': 'O', 'Щ': 'Shh', 'Е': 'E', 'П': 'P', 'Ъ': '*', 'Ё': 'Jo', 'Р': 'R', 'Ы': 'Y', 'Ж': 'Zh',
     'С': 'S', 'Ь': "'", 'З': 'Z', 'Т': 'T', 'Э': 'Je', 'И': 'I', 'У': 'U', 'Ю': 'Ju', 'Й': 'J', 'Ф': 'F', 'Я': 'Ya'}
filename = input()
with open(filename, 'r', encoding='utf-8') as source, open('result.txt', 'w', encoding='utf-8') as tr_result:
    for l in source.read():
        trans = translit.get(l.lower(), l)
        tr_result.write(trans if l.islower() else trans.capitalize())

    

Задание 10

Имеется лог-файл crm_log.txt с
информацией о времени входа пользователей в CRM-систему и о времени выхода. Напишите программу, которая
определяет пользователей, работавших в системе более 4 часов, и записывает их
имена и фамилии в файл best_employees.txt.

Пример лога crm_log.txt:

        Егор Тимофеев, 09:10, 16:50
Марина Абрамова, 12:00, 15:59
Никита Круглов, 09:10, 12:45
Анна Семенова, 08:10, 12:30
Юлия Сафонова, 10:10, 10:50
Михаил Колесников, 11:10, 12:10

    

Ожидаемый результат в файле best_employees.txt:

        Егор Тимофеев
Анна Семенова

    

Решение:

        with open('crm_log.txt', encoding='utf-8') as file_input, \
     open('best_employees.txt', 'w', encoding='utf-8') as file_output:

    for line in file_input:
        start, end = [int(h) * 60 + int(m) for t in line.split(', ')[1:] for h, m in [t.split(':')]]
        if end - start > 240:
            file_output.write(line.split(', ')[0] + '\n')

    

Подведем итоги

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

  • Получать любую информацию о файлах и директориях.
  • Создавать, изменять, перемещать и удалять директории и файлы.
  • Проводить любые операции с содержимым текстовых и двоичных файлов.

В следующей статье будем изучать регулярные выражения.

***

Содержание самоучителя

  1. Особенности, сферы применения, установка, онлайн IDE
  2. Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
  3. Типы данных: преобразование и базовые операции
  4. Методы работы со строками
  5. Методы работы со списками и списковыми включениями
  6. Методы работы со словарями и генераторами словарей
  7. Методы работы с кортежами
  8. Методы работы со множествами
  9. Особенности цикла for
  10. Условный цикл while
  11. Функции с позиционными и именованными аргументами
  12. Анонимные функции
  13. Рекурсивные функции
  14. Функции высшего порядка, замыкания и декораторы
  15. Методы работы с файлами и файловой системой
  16. Регулярные выражения
  17. Основы скрапинга и парсинга
  18. Основы ООП: инкапсуляция и наследование
  19. Основы ООП – абстракция и полиморфизм
  20. Графический интерфейс на Tkinter
  21. Основы разработки игр на Pygame
  22. Основы работы с SQLite
  23. Основы веб-разработки на Flask
  24. Основы работы с NumPy
  25. Основы анализа данных с Pandas

How to Delete a File in Python – And Remove a Directory, Too

By Dillion Megida

Python offers many standard utility modules which enable several functions in the applications we build. In this article, we’ll learn about the modules for deleting files and directories.

One of the most popular modules exposed in Python is the os module. This is one of the standard utility modules. This module offers various functions for interacting with the operating system of a device. It allows us to work with files and directories.

Another module is shutil which is used for high-level file operations.

In this article, I’ll be showing you how to use these modules in Python to delete files and remove directories. I’ll be testing the examples here on my Mac device, but you can also test them on any other type of device you have with Python installed.

Overview of the os Module

The os module allows us to execute operating system tasks on Windows, Mac, and Linux.

To use this module, you first have to import it:

import os

This module has different properties and functions that we can use to access different information about the OS and to also run some file-related tasks.

For example, there’s the name property which returns the name of the operating system module imported for the device you use the module on. On my Mac device, after running python test.py (where test.py is the file with my code) here’s the result I get:

import os

print(os.name)
# posix

There’s also the environ object which contains all the environment variables and their values:

import os

print(os.environ)
# {
#   ...
#   'SHELL': '/bin/zsh',
#   'HOMEBREW_REPOSITORY': '/opt/homebrew',
#   ...
#   'ZSH': '/Users/dillion/.oh-my-zsh',
#   'NVM_DIR': '/Users/dillion/.nvm',
#   'USER': 'dillion'
#   ...
# }

After running this on my device, I get a bunch of environment variables. I’ve listed a few above, and you can see the SHELL,ZSH, and USER variables.

To get the value of a specific variable, you can use the get() method. Here are some examples:

import os

homeEnv = os.environ.get('HOME')
# /Users/dillion

shellEnv = os.environ.get('SHELL')
# /bin/zsh

zshEnv = os.environ.get('ZSH')
# /Users/dillion/.oh-my-zsh

userEnv = os.environ.get('USER')
# dillion

Overview of the shutil Module

While the os module is more focused on operating system tasks (depending on the operating system in use), the shutil module is for high-level file operations from Python such as copying and removing files.

To use this module, you also have to import it first:

import shutil

This module also has methods that you can use for file and directory operations. Let’s see some examples.

There’s the move directory, which allows you to move a file from one location to a destination. Here’s a test.py example:

import shutil

shutil.move("./test.py", "temp/")

When I run python test.py, the test.py file is moved to the temp directory. If the file or the directory does not exist, you get an error.

Another method of this module is copytree, which copies a directory’s contents to a destination. Let’s say we have a folder called directory1/ with the following files:

directory1
├── file1.py
└── test
   └── file2.py

This directory has a file named file1.py and a directory called test which in turn contains a file named file2.py.

Now let’s see how to move these files from directory1 to a new directory called directory2:

import shutil

shutil.copytree("directory1/", "directory2/")

When you run the code above, directory2 is created, and the contents of directory1 are copied to directory2.

Now that we’ve seen some examples, let’s see how to delete a file and remove a directory.

The os module has a remove() method which allows you to remove (delete) a file. Such files are deleted permanently – not in the recycle bin. Here’s an example:

import os

os.remove('./temporary.txt')

This method accepts the file path argument, where you specify the location of the file you want to remove. If such a file does not exist, running the command above produces an error like this:

FileNotFoundError: [Errno 2] No such file or directory: './temporary.txt'

So let me first create the file. I’ll do this on my command line like this:

touch temporary.txt
echo "new file" > temporary.txt

Now I have the temporary.txt file with the «new file» text. When I run my Python above, this file will be removed:

python test.py
#  file now deleted

Another way to improve your code is to first check if the file exists, before calling the remove method. You can do this using the path.isfile() method. Here’s how:

import os

fileExists = os.path.isfile('./temporary.txt')

if fileExists:
    os.remove('./temporary.txt')

First, we check if temporary.txt exists by calling the isfile() method on the path property of the os module. This method returns True or False depending on the existence of that file. You can then use an if statement to test the returned boolean before calling the remove method.

How to Delete a Directory in Python

The os module also has the rmdir method which you can use to delete a folder. But, the folder has to be empty. Here’s an example:

import os

os.rmdir('directory1/')

If directory1 exists and is empty, it will be deleted. If it does not exist, you get a No such file or directory error. If it exists but is not empty, you get a Directory not empty error. So how do you delete non-empty directories?

Remember I said shutil is for high-level file operations? Well, this is where it’s also useful – for deleting empty and non-empty directories.

shutil has the rmtree method which is used for removing a directory (and all its contents such as files, sub-files, sub-directories, and so on).

Here’s an example:

import shutil

shutil.rmtree('directory2/')

If directory2 does not exist, you get a No such file or directory error. But if the directory exists and is non-empty, it will be deleted. Even if it’s empty, it will also be deleted.

Wrapping Up

When building applications, sometimes you want to create, delete, modify, copy or perform other file operations. Thanks to some standard modules exposed from Python, these operations are possible.

In this article, I’ve shown you how to use the os and shutil standard modules from Python to delete files and directories on a device.


Learn to code for free. freeCodeCamp’s open source curriculum has helped more than 40,000 people get jobs as developers. Get started

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows блокирует скаченные файлы
  • Clipchamp что это за программа в windows 11
  • Как проверить загрузочный сектор windows
  • Запуск spark на windows
  • Disable windows keyboard shortcut