Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

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


3 способа как удалить файлы в Python

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

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

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

1 Использование модуля os

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

import os
 if os.path.isfile('/Users/test/new_file.txt'):
 os.remove('/Users/test/new_file.txt')
 print("success")
 else: 
 print("File doesn't exists!")
 

Здесь мы использовали оператор if-else, чтобы избежать исключения, которое может возникнуть, если каталог файлов не существует. Метод isfile() проверяет существование файла с именем файла — ‘new_file.txt’.

Опять же, модуль os предоставляет нам другой метод, rmdir() , который можно использовать для удаления или удаления пустого каталога. Например:

import os
 os.rmdir('directory')
 

Примечание: каталог должен быть пустым. Если он содержит какой-либо контент, метод возвращает ошибку OSerror.

2 Использование модуля shutil

Shutil — это еще один метод удаления файлов, который позволяет пользователю легко удалить файл или его полный каталог (включая все его содержимое).

rmtree() — это метод модуля shutil, который рекурсивно удаляет каталог и его содержимое. Давайте посмотрим, как его использовать:

import shutil
 shutil.rmtree('/test/')
 

Для вышеупомянутого кода удален каталог / test /. И самое главное, все содержимое внутри каталога также удаляется.

3 Использование модуля pathlib

pathlib — это встроенный модуль Python, доступный для Python 3.4+.

Приведем пример:

import pathlib
 file=pathlib.path("test/new_file.txt")
 file.unlink()
 

В приведенном выше примере метод path() используется для получения пути к файлу, тогда как метод unlink() используется для отмены связи или удаления файла по указанному пути.

Метод unlink() работает с файлами. Если указан каталог, возникает ошибка OSError. Чтобы удалить каталог, мы можем прибегнуть к одному из ранее обсужденных методов.

Используемая литература

  • https://docs.python.org/3/library/os.html#os.remove
  • https://docs.python.org/3/library/shutil.html
  • https://docs.python.org/3/library/pathlib.html

Как удалить файлы и каталоги в Python

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

В этой статье объясняется, как удалять файлы и каталоги, используя функцию из модуля os, pathlib и shutil.

 

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

В Python вы можете использовать os.remove(), os.unlink(), pathlib.Path.unlink() чтобы удалить один файл.

Модуль os обеспечивает переносимый способ взаимодействия с операционной системой. Модуль доступен для Python 2 и 3.

Чтобы удалить один файл с помощью os.remove(), передайте путь к файлу в качестве аргумента:

import os
 
 file_path = '/tmp/file.txt'
 os.remove(file_path)
 

 

Функции os.remove() и os.unlink() семантически идентичны:

import os
 
 file_path = '/tmp/file.txt'
 os.unlink(file_path)
 

 

Если указанный файл не существует, выдается ошибка FileNotFoundError. Оба os.remove() и os.unlink() могут удалять только файлы, а не каталоги. Если указанный путь указывает на каталог, он выдаст ошибку IsADirectoryError.

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

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

import os
 
 file_path = '/tmp/file.txt'
 
 try:
 os.remove(file_path)
 except OSError as e:
 print("Ошибка: %s : %s" % (file_path, e.strerror))
 

 

Модуль pathlib доступен в Python 3.4 и выше. Если вы хотите использовать этот модуль в Python 2, вы можете установить его с помощью pip. pathlib предоставляет объектно-ориентированный интерфейс для работы с путями файловой системы для разных операционных систем.

Чтобы удалить файл с модулем pathlib, создайте объект Path, указывающий на файл, и вызовите метод unlink() для объекта:

from pathlib import Path
 
 file_path = Path('/tmp/file.txt')
 
 try:
 file_path.unlink()
 except OSError as e:
 print("Ошибка: %s : %s" % (file_path, e.strerror))
 

 

pathlib.Path.unlink(), os.remove() и os.unlink() также могут быть использованы для удаления символической ссылки.

 

Сопоставление с образцом

Вы можете использовать модуль glob для сопоставления нескольких файлов на основе шаблона. Например, чтобы удалить все файлы .txt в каталоге /tmp, вы должны использовать что-то вроде этого:

import os
 import glob
 
 files = glob.glob('/tmp/*.txt')
 
 for f in files:
 try:
 f.unlink()
 except OSError as e:
 print("Ошибка: %s : %s" % (f, e.strerror))
 

 

Чтобы рекурсивно удалить все файлы .txt в каталоге /tmp и во всех его подкаталогах, передайте аргумент recursive=True функции  glob() и используйте шаблон “ ** `:

import os
 import glob
 
 files = glob.glob('/tmp/**/*.txt', recursive=True)
 
 for f in files:
 try:
 os.remove(f)
 except OSError as e:
 print("Ошибка: %s : %s" % (f, e.strerror))
 

 

Модуль pathlib включает в себя две функции, glob() и rglob() соответствие файлов в заданной директории. glob() сопоставляет файлы только в каталоге верхнего уровня. rglob(), рекурсивно сопоставляет все файлы в каталоге и всех подкаталогах. В следующем примере кода удаляются все файлы .txt в каталоге /tmp:

from pathlib import Path
 
 for f in Path('/tmp').glob('*.txt'):
 try:
 f.unlink()
 except OSError as e:
 print("Ошибка: %s : %s" % (f, e.strerror))
 

 

Удаление каталогов (папок)

В Python вы можете использовать os.rmdir() и pathlib.Path.rmdir() для удаления пустой директории, и shutil.rmtree() для удаления непустой директории.

В следующем примере показано, как удалить пустой каталог:

import os
 
 dir_path = '/tmp/img'
 
 try:
 os.rmdir(dir_path)
 except OSError as e:
 print("Ошибка: %s : %s" % (dir_path, e.strerror))
 

 

Кроме того, вы можете удалить каталоги с помощью модуля pathlib:

from pathlib import Path
 
 dir_path = Path('/tmp/img')
 
 try:
 dir_path.rmdir()
 except OSError as e:
 print("Ошибка: %s : %s" % (dir_path, e.strerror))
 

 

Модуль shutil позволяет выполнять ряд операций высокого уровня файлов и каталогов.

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

import shutil
 
 dir_path = '/tmp/img'
 
 try:
 shutil.rmtree(dir_path)
 except OSError as e:
 print("Ошибка: %s : %s" % (dir_path, e.strerror))
 

 

Переданный аргумент shutil.rmtree() не может быть символической ссылкой на каталог.

 

Вывод

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

Мы показали вам, как использовать os.remove(), os.unlink(), pathlib.Path.unlink() чтобы удалить один файл, os.rmdir() и pathlib.Path.rmdir() чтобы удалить пустую директорию и shutil.rmtree() для рекурсивного удаления каталога и все его содержимое.

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

создание, изменение, удалений файлов ~ PythonRu

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

В индустрии программного обеспечения большинство программ тем или иным образом обрабатывают файлы: создают их, переименовывают, перемещают и так далее. Любой программист должен обладать таким навыком. С этим руководством вы научитесь использовать модуль os в Python для проведения операций над файлами и каталогами вне зависимости от используемой операционной системы.

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

Модуль встроенный, поэтому для работы с ним не нужно ничего устанавливать.

Вывод текущей директории

Для получения текущего рабочего каталога используется os.getcwd():

import os
 
 
 print("Текущая деректория:", os.getcwd())
 

os.getcwd() возвращает строку в Юникоде, представляющую текущий рабочий каталог. Вот пример вывода:

Текущая деректория: C:\python3\bin
 

Создание папки

Для создания папки/каталога в любой операционной системе нужна следующая команда:


 os.mkdir("folder")
 

После ее выполнения в текущем рабочем каталоге тут же появится новая папка с названием «folder».

Если запустить ее еще раз, будет вызвана ошибка FileExistsError, потому что такая папка уже есть. Для решения проблемы нужно запускать команду только в том случае, если каталога с таким же именем нет. Этого можно добиться следующим образом:


 
 if not os.path.isdir("folder"):
 os.mkdir("folder")
 

Функция os.path.isdir() вернет True, если переданное имя ссылается на существующий каталог.

Изменение директории

Менять директории довольно просто. Проделаем это с только что созданным:


 os.chdir("folder")
 

Еще раз выведем рабочий каталог:


 print("Текущая директория изменилась на folder:", os.getcwd())
 

Вывод:

Текущая директория изменилась на folder: C:\python3\bin\folder
 

Создание вложенных папок

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


 os.chdir("..")
 
 
 os.makedirs("nested1/nested2/nested3")
 

Это создаст три папки рекурсивно, как показано на следующем изображении:

Создание файлов

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


 text_file = open("text.txt", "w")
 
 text_file.write("Это текстовый файл")
 

w значит write (запись), a — это appending (добавление данных к уже существующему файлу), а r — reading (чтение). Больше о режимах открытия можно почитать здесь.

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

С помощью модуля os достаточно просто переименовать файл. Поменяем название созданного в прошлом шаге.


 os.rename("text.txt", "renamed-text.txt")
 

Функция os.rename() принимает 2 аргумента: имя файла или папки, которые нужно переименовать и новое имя.

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

Функцию os.replace() можно использовать для перемещения файлов или каталогов:


 os.replace("renamed-text.txt", "folder/renamed-text.txt")
 

Стоит обратить внимание, что это перезапишет путь, поэтому если в папке folder уже есть файл с таким же именем (renamed-text.txt), он будет перезаписан.

Список файлов и директорий


 print("Все папки и файлы:", os.listdir())
 

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

Все папки и файлы: ['folder', 'handling-files', 'nested1', 'text.txt']
 

А что если нужно узнать состав и этих папок тоже? Для этого нужно использовать функцию os.walk():


 for dirpath, dirnames, filenames in os.walk("."):
 
 for dirname in dirnames:
 print("Каталог:", os.path.join(dirpath, dirname))
 
 for filename in filenames:
 print("Файл:", os.path.join(dirpath, filename))
 

os.walk() — это генератор дерева каталогов. Он будет перебирать все переданные составляющие. Здесь в качестве аргумента передано значение «.», которое обозначает верхушку дерева:

Каталог: .\folder
 Каталог: .\handling-files
 Каталог: .\nested1
 Файл: .\text.txt
 Файл: .\handling-files\listing_files.py
 Файл: .\handling-files\README.md
 Каталог: .\nested1\nested2
 Каталог: .\nested1\nested2\nested3
 

Метод os.path.join() был использован для объединения текущего пути с именем файла/папки.

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

Удалим созданный файл:


 os.remove("folder/renamed-text.txt")
 

os.remove() удалит файл с указанным именем (не каталог).

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

С помощью функции os.rmdir() можно удалить указанную папку:


 os.rmdir("folder")
 

Для удаления каталогов рекурсивно необходимо использовать os.removedirs():


 os.removedirs("nested1/nested2/nested3")
 

Это удалит только пустые каталоги.

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

Для получения информации о файле в ОС используется функция os.stat(), которая выполняет системный вызов stat() по выбранному пути:

open("text.txt", "w").write("Это текстовый файл")
 
 
 print(os.stat("text.txt"))
 

Вывод:

os.stat_result(st_mode=33206, st_ino=14355223812608232, st_dev=1558443184, st_nlink=1, st_uid=0, st_gid=0, st_size=19, st_atime=1575967618, st_mtime=1575967618, st_ctime=1575966941)
 

Это вернет кортеж с отдельными метриками. В их числе есть следующие:

    • st_size — размер файла в байтах
    • st_atime — время последнего доступа в секундах (временная метка)
    • st_mtime — время последнего изменения
    • st_ctime — в Windows это время создания файла, а в Linux — последнего изменения метаданных

Для получения конкретного атрибута нужно писать следующим образом:


 print("Размер файла:", os.stat("text.txt").st_size)
 

Вывод:

Размер файла: 19
 

На этой странице больше об атрибутах.

Выводы

Работать с файлами и каталогами в Python очень просто. Не имеет значения даже используемая операционная система, хотя отдельные уникальные для системы функции можно использовать: например, os.chown() или os.chmod() в Linux. Более подробно эта тема освещена в официальной документации Python.

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

В прошлой статье мы говорили о работе с файлами в Python.  Файлы и папки можно также организовывать по каталогам, что очень удобно, например, в Google Colab. Сегодня рассмотрим управление файлами и папками с помощью Python-модуля os. Читайте далее, что такой текущий рабочий каталог; вывод всех файлов и папок; создание, переименование и удаление папок и файлов; а также обход дерева каталогов.

Текущая рабочая директория

Python работает с файловой системой относительно текущей рабочей директории. Чтобы узнать, какая она на вашей операционной системе, используется функция getcwd (cwd расшифровывается как current working directory):

>>> os.getcwd()
 '/home/root'
 

Функция chdir сменит ее на другую, которая будет указана аргументом:

>>> os.chdir('/home/root/Documents')
 >>> os.getcwd()
 home/root/Documents'
 
Получение списков файлов и папок

Функция listdir без указания аргумента покажет все файлы и папки текущей рабочей директории. Можно также указать аргументом интересующий вас путь. Ниже представлен код на Python.

>>> os.listdir()
 ['Documents', 'Music', 'Public', 'Videos',
 'Desktop', 'Downloads', 'Pictures', 'Templates']
 
Создаем папки в Python

Чтобы создать одну папку, применяется функция mkdir. Эта функция сможет создать только одну папку в существующем пути, если указанного пути не существует, то вызовется ошибка. Ниже это показывает код на Python:

>>> os.mkdir('dir') # все ок
 >>> os.mkdir('dir2/sub-dir') # папки dir2 не существует
 ---------------------------------------------------------------------------
 ----> 1 os.mkdir('dir2/sub-dir')
 FileNotFoundError: [Errno 2] No such file or directory: 'dir2/sub-dir'
 

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

>>> os.makedirs('dir2/sub-dir')
 
Переименовываем файлы и папки

Функция rename изменит имя файла или папки, если они существуют. Функция не сможет переименовать папку в название, которое уже существует в каталоге, если она что-то внутри содержит.

>>> os.rename('dir', 'tmpdir') # все ок
 >>> os.rename('tmpdir', 'Videos')
 ---------------------------------------------------------------------------
 OSError: [Errno 39] Directory not empty: 'dir' -> 'Videos'
 
Удаляем папки и файлы

Для удаления файла используется функция remove. Ниже Python-код удалит file:

>>> os.remove('file')
 

Удалить одну папку можно с функцией rmdir. А вот за удаление целого каталога отвечает removedirs. Например, имеется каталог dir/sub-dir, тогда rmdir('dir/sub-dir') удалит только папку sub-dir, а removedirs('dir/sub-dir') удалит и dir, и sub-dir. Примеры на Python:

>>> os.rmdir('direct') # удалит папку
 >>> os.makedirs('dir/sub-dir') # удалит каталог
 
Извлекаем информацию из файлов и папок

Функция stat вернет статус файла или папки. Статус имеет много атрибутов, но наиболее полезный из них – st_mtime, который содержит время последнего изменения содержимого в секундах (modification time). Это время можно преобразовать в datetime, о котором мы говорили тут. Вот так, в итоге, будет выглядеть Python-код:

>>> from datetime import datetime
 >>> cwd = os.getcwd()
 >>> status_info = os.stat(cwd)
 >>> datetime.fromtimestamp(status_info.st_mtime)
 datetime.datetime(2020, 9, 3, 13, 12, 13, 825475)
 
Гуляем по каталогу

Функция walk сгенерирует все дерево каталога. Поскольку возвращается генератор, то по нему можно итерироваться, причем генератор производит кортеж из трех значений: путь до папки, имя папки, имя файлов. Код на Python ниже демонстрирует это на примере каталога tmpdir, который имеет папки и файлы, а внутри этих папок также имеются файлы и папки.

>>> route = '/home/root/tmpdir'
 >>> for dirpath, dirnames, filenames in os.walk(route):
 ...     print('Текущий путь:', dirpath)
 ...     print('Папки:', dirnames)
 ...     print('Файлы:', filenames)
 ...     print()
 ...
 Текущий путь: /home/root/tmpdir
 Папки: ['sub2-dir', 'sub3-dir']
 Файлы: ['thisisfile.bat']
  
 Текущий путь: /home/root/tmpdir/sub2-dir
 Папки: ['sub2-dir2', 'sub2-dir1']
 Файлы: ['somefile.txt']
  
 Текущий путь: /home/root/tmpdir/sub2-dir/sub2-dir2
 Папки: []
 Файлы: []
  
 Текущий путь: /home/root/tmpdir/sub2-dir/sub2-dir1
 Папки: []
 Файлы: ['sub2-dir1_file.txt']
  
 Текущий путь: /home/root/tmpdir/sub3-dir
 Папки: []
 Файлы: ['file.bin']
 

 
 
В следующей статье рассмотрим модули управления путями файловой системы с os.path и pathlib. А как работать с файловой системой в Python на практических примерах реальных Data Science проектов, вы узнаете на наших курсах в лицензированном учебном центре обучения и повышения квалификации IT-специалистов в Москве.

Источники

  1. https://docs.python.org/3/library/os.html

копирование файлов и удаление или переименование — Проверка существования и получение размера файла

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

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

Избежать досадных ошибок при работе с текстовым документом, которые могут быть связаны с его отсутствием на жестком диске компьютера, поможет метод exists из модуля os. Его вызов позволяет проверить в Python существование файла по указанному пути, получив в качестве результирующего ответа булево значение True или False. Чтобы воспользоваться данным методом, необходимо прежде всего подключить библиотеку os, а затем вызвать exists у класса path. Следующий пример на Python показывает проверку наличия файлов test.txt и test10.txt в корневом каталоге жесткого диска D. Функция print показывает, что в наличии на D только первый документ.

import os
 print(os.path.exists("D:\\test.txt"))
 print(os.path.exists("D:\\test10.txt"))
 
 True
 False

Иногда при работе с документами возникает потребность в проверке не только существования некоего объекта по заданному пути. Функция isfile из уже упомянутой здесь библиотеки os дает программисту возможность убедиться в том, что полученный по определенному адресу объект на жестком диске компьютера является файлом, а не папкой. Данный метод также  находится в классе path. В следующем примере показывается реакция isfile на получение в качестве аргумента файла test.txt и каталога folder в корне D. Как видно из результатов работы функции print, в первом случае отображается True, а затем False.

import os
 print(os.path.isfile("D:\\test.txt"))
 print(os.path.isfile("D:\\folder"))
 
 True
 False

Проверить наличие файла по указанному адресу можно и с помощью функции open, применив дополнительно конструкцию with as. Данный метод производит открытие документа для того, чтобы программа могла взаимодействовать с его содержимым. Если функция open смогла без ошибок выполниться, это означает, что по переданному ей в качестве аргумента пути имеется файл. Если же произойдет исключение, то файл не удалось открыть. Это еще не говорит о том, что его нету. Возможно, к примеру, не достаточно прав доступа к нему. В приведенном ниже примере программа сообщает о наличии искомого документа при помощи метода print. Как видно из результатов, на экран выводится сообщение file is open.

try:
 with open("D:\\test.txt") as file:
 print("file is open")
 except:
 print('no open')
 
 file is open

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

Библиотека под названием shutil включает в себя несколько полезных функций для создания копий объектов на жестком диске. Чтобы быстро скопировать файл в исходный каталог, стоит воспользоваться методом copyfile, предварительно подключив модуль shutil. В роли первого аргумента здесь выступает оригинальный документ, в то время как вторым параметром нужно поставить предполагаемый новый файл. Стоит учитывать, что копируется только содержимое, но не метаданные. В следующем примере происходит копирование данных из файла test.txt в test2.txt на диске D. Функция copyfile также возвращает адрес созданного документа.

import shutil
 shutil.copyfile("D:\\test.txt", "D:\\test2.txt")

Встроенный метод copy из модуля shutil позволяет в Python копировать файл в указанную папку, сохраняя при этом его изначальное имя. Приведенный ниже пример кода демонстрирует копирование информации из test.txt в объект, который находится на диске D в каталоге под названием folder. Как и в предыдущем случае с функцией copyfile, переносятся только внутренние данные, но не сведения о дате создания и редактирования документа.

import shutil
 shutil.copy("D:\\test.txt", "D:\\folder")

Чтобы полностью скопировать информацию из текстового файла, а также все сведения о нем, необходимо воспользоваться готовым методом copy2. Способ его применения такой же, как и в случае с функцией copy. На месте первого параметра здесь размещается адрес изначального файла, в то время как второй аргумент сообщает локацию и название нового документа. Ниже показан пример, где содержимое и метаданные копируются в test2.txt из папки folder.

import shutil
 shutil.copy2("D:\\test.txt", "D:\\folder\\test2.txt")

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

Избавиться от объекта, если известно его имя и точное расположение на диске, очень легко. С этой задачей поможет справиться метод remove из уже упомянутой ранее библиотеки os. Все, что требуется сделать, это передать ей в качестве параметра полный адрес ненужного файла, не забыв для начала подключить модуль os. Ниже приведен пример того, как с помощью скрипта Python удалить файл test.txt в корне диска D.

import os
 os.remove("D:\\test.txt")

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

Определить точный размер любого объекта на жестком диске можно с помощью стандартной функции getsize из модуля os, которая возвращает величину файла в байтах. Выполнив импорт библиотеки os, необходимо вызвать метод класса path. Аргументом тут выступает расположение документа в памяти компьютера. Согласно результатам выполнения getsize, размер test.txt составляет 7289. Метод print выводит это на экран.

import os
 print(os.path.getsize("D:\\test.txt"))
 
 7289

Вычислить размер файла в Python можно и другим способом, открыв его при помощи open, после чего вызвав функцию seek. Ей необходимо передать в качестве параметра область для чтения данных, начиная от начала файла до его конца. В итоге следует вызвать метод tell через ссылку на текстовый файл, а затем отправить результат его работы в print для вывода в консоль.

import os
 with open("D:\\test.txt") as file:
 file.seek(0, os.SEEK_END)
 print(file.tell())
 
 7289

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

Изменить название документа можно не только благодаря средствам системы, но и с помощью готовых функций модуля os. С этой задачей хорошо справляется метод rename, принимающий в качестве параметров исходное и новое имя файла. Следующий пример показывает работу с документом test.txt в корневом каталоге диска D, который переименовывается в test1.txt.

import os
 os.rename("D:\\test.txt", "D:\\test1.txt")

Аналогично, можно в Python переименовать файл с помощью метода move из модуля shutil. Подключив данную библиотеку, достаточно лишь передать функции местоположение и новое имя документа. Код программы, где продемонстрировано переименование test.txt в test1.txt, находится ниже.

import shutil
 shutil.move("D:\\test.txt", "D:\\test1.txt")

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

python: Удалить файл или папку

Как удалить файл или папку в Python?

В Python 3 для отдельного удаления файла и каталога используйте методы объекта unlinkи соответственно:rmdir Path

from pathlib import Path dir_path = Path.home() / 'directory' file_path = dir_path / 'file' file_path.unlink() # remove file dir_path.rmdir() # remove directory 

Обратите внимание, что вы также можете использовать относительные пути с Pathобъектами, и вы можете проверить свой текущий рабочий каталог с Path.cwd.

Для удаления отдельных файлов и каталогов в Python 2 см. Раздел с пометкой ниже.

Чтобы удалить каталог с содержимым, используйте shutil.rmtreeи обратите внимание, что это доступно в Python 2 и 3:

from shutil import rmtree rmtree(dir_path) 

демонстрация

Новым в Python 3.4 является Pathобъект.

Давайте использовать один, чтобы создать каталог и файл, чтобы продемонстрировать использование. Обратите внимание, что мы используем /для объединения частей пути, это решает проблемы между операционными системами и проблемы, возникающие при использовании обратной косой черты в Windows (где вам нужно либо удвоить обратную косую черту, например, \\либо использовать необработанные строки, например r"foo\bar"):

from pathlib import Path # .home() is new in 3.5, otherwise use os.path.expanduser('~') directory_path = Path.home() / 'directory' directory_path.mkdir() file_path = directory_path / 'file' file_path.touch() 

и сейчас:

>>> file_path.is_file() True 

Теперь давайте удалим их. Сначала файл:

>>> file_path.unlink() # remove file >>> file_path.is_file() False >>> file_path.exists() False 

Мы можем использовать globbing для удаления нескольких файлов - сначала давайте создадим несколько файлов для этого:

>>> (directory_path / 'foo.my').touch() >>> (directory_path / 'bar.my').touch() 

Затем просто переберите шаблон глобуса:

>>> for each_file_path in directory_path.glob('*.my'): ... print(f'removing {each_file_path}') ... each_file_path.unlink() ... removing ~/directory/foo.my removing ~/directory/bar.my 

Теперь, демонстрируя удаление каталога:

>>> directory_path.rmdir() # remove directory >>> directory_path.is_dir() False >>> directory_path.exists() False 

Что, если мы хотим удалить каталог и все в нем? Для этого варианта использования используйтеshutil.rmtree

Давайте воссоздадим наш каталог и файл:

file_path.parent.mkdir() file_path.touch() 

и обратите внимание, что происходит rmdirсбой, если он не пуст, поэтому rmtree так удобен:

>>> directory_path.rmdir() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "~/anaconda3/lib/python3.6/pathlib.py", line 1270, in rmdir self._accessor.rmdir(self) File "~/anaconda3/lib/python3.6/pathlib.py", line 387, in wrapped return strfunc(str(pathobj), *args) OSError: [Errno 39] Directory not empty: '/home/excelsiora/directory' 

Теперь импортируйте rmtree и передайте каталог функции:

from shutil import rmtree rmtree(directory_path) # remove everything 

и мы видим, что все это было удалено:

>>> directory_path.exists() False 

Python 2

Если вы используете Python 2, есть обратный порт модуля pathlib под названием pathlib2 , который можно установить с помощью pip:

$ pip install pathlib2 

И тогда вы можете псевдоним библиотеки pathlib

import pathlib2 as pathlib 

Или просто напрямую импортируйте Pathобъект (как показано здесь):

from pathlib2 import Path 

Если это слишком много, вы можете удалить файлы с помощью os.removeилиos.unlink

from os import unlink, remove from os.path import join, expanduser remove(join(expanduser('~'), 'directory/file')) 

или же

unlink(join(expanduser('~'), 'directory/file')) 

и вы можете удалить каталоги с помощью os.rmdir:

from os import rmdir rmdir(join(expanduser('~'), 'directory')) 

Обратите внимание, что есть также os.removedirs- он только рекурсивно удаляет пустые каталоги, но он может соответствовать вашему варианту использования.

Автор: Aaron Hall Размещён: 12.02.2018 01:44

Как удалить файл в Python

  1. Программирование
  2. Python
  3. Как удалить файл в Python

Автор Джон Пол Мюллер

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

  1. Откройте окно файла Python.

    Перед вами редактор, в котором вы можете ввести пример кода.

  2. Введите в окно следующий код - нажимая Enter после каждой строки:

     импорт ОС os.remove ("ChangedFile.csv") print ("Файл удален!") 

    Задача в данном случае выглядит простой, и это так. Все, что вам нужно сделать, чтобы удалить файл, это вызвать os.remove () с соответствующим именем файла и путем (по умолчанию Python использует текущий каталог, поэтому вам не нужно указывать путь, если файл, который вы хотите удалить, находится в папке каталог по умолчанию). Легкость, с которой вы можете выполнить эту задачу, почти пугает, потому что это слишком просто.

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

    • os.rmdir (): Удаляет указанный каталог. Каталог должен быть пустым, иначе Python отобразит сообщение об исключении.

    • shutil.rmtree (): Удаляет указанный каталог, все подкаталоги и все файлы. Эта функция особенно опасна, потому что она удаляет все без проверки (Python предполагает, что вы знаете, что делаете).В результате вы можете легко потерять данные, используя эту функцию.

  3. Выберите «Выполнить» → «Выполнить модуль».

    Приложение отображает файл удален! сообщение. Когда вы посмотрите в каталог, который изначально содержал файл ChangedFile.csv, вы увидите, что файл исчез.

Об авторе книги

Джон Пол Мюллер - внештатный автор и технический редактор, на его счету более 107 книг и 600 статей.Его предметы варьируются от сетей и искусственного интеллекта до управления базами данных и программирования без головы. Он также консультирует и пишет сертификационные экзамены. Посетите его веб-сайт http://www.johnmuellerbooks.com/.

.

Python - Как удалить файл или папку?

Просмотрено: 9 931 | +118 pv / w

В этом руководстве мы узнаем, как удалить файл или каталог в Python . Процесс удаления файла или папки в Python прост с использованием модуля os .

  • os.remove - Удаляет файл.
  • os.rmdir - Удаляет папку.
  • shutil.rmtree - Удаляет каталог и все его содержимое.

1. Удаляет файл.

Сначала мы увидим метод удаления файла из каталога с помощью команды os.remove

  #! / usr / bin / python импорт ОС # получение имени файла от пользователя file_path = input ("Введите имя файла: -") # проверяем, существует файл или нет если os.path.exists (file_path): # удаление файла с помощью метода os.remove () os.remove (путь_к файлу) еще: # файл не найден сообщение print ("Файл не найден в каталоге")  

Выход

  Введите имя файла: - образец.текст Файл не найден в каталоге  

2. Удаляет папку.

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

  #! / usr / bin / python импорт ОС # получение пути к папке от пользователя folder_path = input ("Введите путь к папке: -") # проверка, существует ли папка или нет если os.path.exists (путь к папке): # проверка, пуста ли папка или нет если len (os.listdir (folder_path)) == 0: # удаление файла с помощью метода os.remove () os.rmdir (путь_папки) еще: # сообщение о том, что папка не пуста print («Папка не пуста») еще: # файл не найден сообщение print ("Файл не найден в каталоге")  

Выход

  Введите путь к папке: - образец Папка не пуста  

3. Удаляет каталог и все его содержимое.

  #! / usr / bin / python импорт ОС import sys импортный шутиль # Получить имя каталога mydir = input ("Введите имя каталога:") пытаться: shutil.rmtree (mydir) кроме OSError как e: print ("Ошибка:% s -% s."% (e.filename, e.strerror))  

Выход

  Введите имя каталога: d: \ logs Ошибка: d: \ logs - системе не удается найти указанный путь.  

Список литературы

.

Python Удалить файл: пошаговое руководство

  • Home
  • Лучшие проекты
    • All Star Projects
    • Веб-разработка
    • Мобильная разработка
    • Дизайн
    • Data Science
  • Bootcamp
    • Best Online Bootcamps
    • Best Online Bootcamps
    • Лучшие учебные курсы по науке о данных
    • Лучшие учебные курсы по аналитике данных
    • Лучшие учебные курсы по кибербезопасности
    • Лучшие учебные курсы ISA 2020
  • программ
    • Веб-разработка
    • Мобильная разработка
    • Управление продуктами
    • Цифровой маркетинг
    • Дизайнер UX / UI
    • Администрирование баз данных
    • Управление социальными сетями
    • InfoSec Analyst
    • Инженер по обеспечению качества
    • SEO Manager
    • Computer Systems Analyst
    • 9 0003 Разработчик WordPress
  • Блог
    • Bootcamps
    • Кодирование
    • Ресурсы для карьеры
    • Tech Fields
    • Новости и комментарии
  • Главная страница Веб-разработка
  • Мобильная разработка
  • Дизайн
  • Data Science
  • Bootcamps
    • Best Coding Bootcamps
    • Best Online Bootcamps
    • Best Web Design Bootcamps
    • Best Data Science Bootcamps
    • Best Data Science Bootcamps
    • Учебные курсы по безопасности
    • Лучшие учебные курсы ISA 2020
  • Программы
    • Веб-разработка
    • Мобильная разработка
    • Инженер-программист
    • Наука о данных
    • Кибербезопасность
    • Управление продуктами
    • Цифровой маркетинг
    • UX / UI Designer
    • Администрирование баз данных
    • Управление социальными сетями
    • InfoSec Analyst
    • Инженер по обеспечению качества
    • SEO Manager
    • Computer Systems Analyst
    • WordPress Developer
  • Blog
  • Boot
  • Ресурсы для карьерного роста
  • Tech Fields
  • Новости и комментарии
  • Вход в систему
    • Bootcamps
      • Популярные Bootcamps
      • Bootcamp Prep
      • Bootcamp Financing
      • University Bootcamps
          000 Coding
        • 000
        • 000
        • 000
        • HTML
        • CSS
        • Java
        • JavaScript
        • Python
        • C ++
        • Ruby
        • SQL
        • Git
      • Ресурсы для карьеры
        • Карьерные советы
        • Техника
        • Зарплата
        • Tech Cities
      • Tech Fields
        • Веб-разработка
        • Разработка программного обеспечения
        • Веб-дизайн
        • Наука о данных
      • Новости и комментарии
      .

      Удаление каталога или файла с помощью Python

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

      Модуль ОС в Python предоставляет функции для взаимодействия с операционной системой. Все функции в модуле os вызывают OSError в случае недопустимых или недоступных имен файлов и путей или других аргументов, которые имеют правильный тип, но не принимаются операционной системой.

      Метод os.remove () в Python используется для удаления или удаления пути к файлу. Этот метод не может удалить или удалить каталог . Если указанный путь - это каталог, то метод вызовет OSError .

      Синтаксис: os.remove (путь, *, dir_fd = None)

      Параметр:
      путь: Объект, похожий на путь, представляющий путь к файлу. Объект, подобный пути, является либо строковым, либо байтовым объектом, представляющим путь.
      dir_fd (необязательно): Дескриптор файла, относящийся к каталогу. Значение этого параметра по умолчанию - Нет.
      Если указанный путь является абсолютным, то dir_fd игнорируется.


      Примечание: Знак «*» в списке параметров указывает, что все следующие параметры (в нашем случае «dir_fd») являются параметрами только для ключевых слов и могут быть предоставлены с использованием их имени, а не позиционного параметра.

      Тип возврата: Этот метод не возвращает никакого значения.

      Пример 1: Предположим, что в папке содержатся следующие файлы:

      Мы хотим удалить файл file1 из указанной выше папки. Ниже представлена ​​реализация.

      импорт ос

      файл = 'file1.txt'

      локация = "D: / Pycharm projects / GeeksforGeeks / Авторы / Nikhil /"

      путь = ос.path.join (расположение, файл )

      os.remove (путь)

      Выход:

      Пример 2: Если указанный путь является каталогом.

      импорт ос

      дирек = «Нихил»

      расположение = "D: / Pycharm projects / GeeksforGeeks / Authors /"

      путь = ос.path.join (расположение, dir )

      os.remove (путь)

      print ( "% s успешно удален" % dir )

      Выход:

       Отслеживание (последний вызов последний): Файл "osremove.ру ", строка 11, в os.remove (путь) IsADirectoryError: [Errno 21] Это каталог: 'D: / Pycharm projects / GeeksforGeeks / Authors / Nikhil' 

      Пример 3: Ошибка обработки при использовании метода os.remove () .



      импорт ос

      путь = 'D: / Pycharm projects / GeeksforGeeks / Авторы / Nikhil'

      попробовать :

      ос.удалить (путь)

      печать ( "% s успешно удален" % путь)

      кроме OS Ошибка как ошибка:

      печать (ошибка)

      печать ( «Путь к файлу не может быть удален» )

      Выход:

       [Errno 21] Это каталог: 'D: / Pycharm projects / GeeksforGeeks / Authors / Nikhil' Путь к файлу не может быть удален 

      Примечание: Чтобы узнать больше о os.remove () нажмите здесь.

      Использование os.rmdir ()

      os.rmdir () Метод в Python используется для удаления или удаления пустого каталога. OSError будет вызвано, если указанный путь не является пустым каталогом.

      Синтаксис: os.rmdir (путь, *, dir_fd = None)

      Параметр:
      путь: Объект, похожий на путь, представляющий путь к файлу. Объект, подобный пути, является либо строковым, либо байтовым объектом, представляющим путь.
      dir_fd (необязательно): Дескриптор файла, относящийся к каталогу. Значение этого параметра по умолчанию - Нет.
      Если указанный путь является абсолютным, то dir_fd игнорируется.

      Примечание: «*» в списке параметров указывает, что все следующие параметры (здесь, в нашем случае «dir_fd») являются параметрами только для ключевых слов и могут быть предоставлены с использованием их имени, а не как позиционный параметр.

      Тип возврата: Этот метод не возвращает никакого значения.

      Пример 1: Предположим, что каталоги -

      Мы хотим удалить каталог Geeks.Ниже представлена ​​реализация.



      импорт ос

      каталог = «Компьютерщики»

      родитель = "D: / Pycharm projects /"

      путь = os.path.join (родительский, каталог)

      ос.rmdir (путь)

      Выход:

      Пример 2: Обработка ошибок при с использованием метода os.rmdir () ,

      импорт ос

      каталог = «GeeksforGeeks»

      родитель = "D: / Pycharm projects /"

      путь = ос.path.join (родительский, каталог)

      попробовать :

      os.rmdir (путь)

      печать ( «Каталог '% s' был успешно удален» % каталог)

      кроме OS Ошибка как ошибка:

      печать (ошибка)

      печать ( «Каталог '% s' не может быть удален» % каталог)

      Выход:

       [WinError 145] Каталог не пуст: 'D: / Pycharm projects / GeeksforGeeks' Каталог 'GeeksforGeeks' не может быть удален 

      Примечание: Чтобы узнать больше о os.rmdir () Щелкните здесь.

      Использование shutil.rmtree ()

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

      Синтаксис: shutil.rmtree (путь, ignore_errors = False, onerror = None)

      Параметры:
      путь: Объект, похожий на путь, представляющий путь к файлу. Объект, подобный пути, является либо строковым, либо байтовым объектом, представляющим путь.
      ignore_errors: Если ignore_errors истинно, ошибки, возникающие в результате неудачных удалений, будут проигнорированы.
      oneerror: Если ignore_errors имеет значение false или опущено, такие ошибки обрабатываются путем вызова обработчика, указанного в onerror.

      Пример 1: Предположим, что каталог и подкаталоги следующие.

      # Родительский каталог:


      # Каталог внутри родительского каталога:

      # Файл внутри подкаталога:

      Мы хотим удалить каталог Авторы. Ниже представлена ​​реализация.

      импорт шутил

      импорт ос

      расположение = "D: / Pycharm projects / GeeksforGeeks /"

      dir = «Авторы»

      путь = ос.path.join (расположение, dir )

      shutil.rmtree (путь)

      Выход:

      Пример 2: При передаче ignore_errors = True .

      импорт шутил

      импорт ос

      расположение = "D: / Pycharm projects / GeeksforGeeks /"

      dir = «Авторы»

      путь = ос.path.join (расположение, dir )

      shutil.rmtree (путь, ignore_errors = Ложь )

      Выход:

      Отслеживание (последний вызов последним):
      Файл «D: / Pycharm projects / gfg / gfg.py», строка 16, в
      shutil.rmtree (путь, ignore_errors = False)
      Файл «C: \ Users \ Nikhil Aggarwal \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ shutil.py », строка 730, в rmtree
      return _rmtree_unsafe (path, onerror)
      Файл« C: \ Users \ Nikhil Aggarwal \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ shutil.py », строка 589, в _rmtree_unsafe
      onerror (os.scandir, path, sys.exc_info ())
      Файл «C: \ Users \ Nikhil Aggarwal \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ shutil.py», строка 586, в _rmtree_unsafe
      с os.scandir (путь) как scandir_it:
      FileNotFoundError: [WinError 3] Система не может найти указанный путь: 'D: / Pycharm projects / GeeksforGeeks / Authors'

      Пример 3: Передача onerror
      В onerror должна быть передана функция, которая должна содержать три параметра.

      • функция - функция , которая вызвала исключение.
      • путь - передано имя пути , которое вызвало исключение при удалении
      • excinfo - информация об исключении , созданная sys.exc_info ()

      Ниже реализация

      импорт шутил

      импорт ос

      def обработчик (func, path, exc_info):

      печать ( «Внутренний обработчик» )

      печать (exc_info)

      расположение = "D: / Pycharm projects / GeeksforGeeks /"

      dir = «Авторы»

      путь = ос.path.join (расположение, dir )

      shutil.rmtree (путь, ошибка = обработчик)

      Выход:

      Внутренний обработчик
      (, FileNotFoundError (2, «Система не может найти указанный путь»),)
      Внутренний обработчик
      (, FileNotFoundError (2, «Система не может найти указанный файл»),)

      Внимание компьютерщик! Укрепите свои основы с помощью курса Python Programming Foundation и изучите основы.

      Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS .


      .

      Как удалить файлы в Python

      Введение

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

      Мы умеем читать и писать в файл на Python. Давайте сегодня изучим операцию удаления в Python.

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

      Методы удаления файлов в Python

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

      1. Использование модуля ОС

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

       импорт ОС если os.path.isfile ('/ Users / test / new_file.txt'): os.remove ('/ Пользователи / test / new_file.txt') печать ("успех") еще: print («Файл не существует!») 

      Здесь мы использовали оператор if-else , чтобы избежать исключения , которое может возникнуть, если каталог файлов не существует . Метод isfile () проверяет существование файла с именем файла- ‘new_file.txt’ .

      Опять же, модуль os предоставляет нам другой метод, rmdir () , который можно использовать для удаления или удаления из пустого каталога . Например:

       импорт ОС os.rmdir ('каталог') 

      Примечание: Каталог должен быть пустым. Если он содержит какой-либо контент, метод возвращает ошибку OSerror .

      2. Использование модуля shutil

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

      rmtree () - это метод модуля shutil , который удаляет каталог и его содержимое рекурсивным способом . Давайте посмотрим, как его использовать:

       импортный шутиль shutil.rmtree ('/ тест /') 

      Для вышеупомянутого кода удален каталог ‘/ test /’ . И самое главное, все содержимое внутри каталога тоже удаляется.

      3. Использование модуля pathlib

      pathlib - это встроенный модуль Python , доступный для Python 3.4+ . Мы можем удалить файл или пустой каталог , используя этот предопределенный модуль.

      Рассмотрим пример:

       импортировать pathlib file = pathlib.path ("test / new_file.txt") file.unlink () 

      В приведенном выше примере метод path () используется для получения пути к файлу, тогда как метод unlink () используется для отмены связи или удаления файла по указанному пути.

      Метод unlink () работает для файлов.Если указан каталог, возникает ошибка OSError. Чтобы удалить каталог, мы можем прибегнуть к одному из ранее обсужденных методов.

      Список литературы

      .

      Удаление определенных файлов с помощью python

      Переполнение стека
      1. Около
      2. Товары
      3. Для команд
      1. Переполнение стека Общественные вопросы и ответы
      2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
      3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
      4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
      5. Реклама Обратитесь к разработчикам и технологам со всего мира
      6. О компании
      .

      Смотрите также