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

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

os.remove() удалит файл.

os.rmdir() удалит пустой каталог.

shutil.rmtree() удалит каталог и все его содержимое.

использование

 shutil.rmtree(path[, ignore_errors[, onerror]]) 

(см. полный документ о запуске ) и / или

 os.remove 

а также

 os.rmdir 

(полный документ по os )

Для удаления файлов:

Вы можете использовать unlink или remove .

 os.unlink(path, *, dir_fd=None) 

Или

 os.remove(path, *, dir_fd=None) 

Эта функция удаляет (удаляет) путь к файлу. Если путь – это каталог, OSError поднимается.

В Python 2, если путь не существует, OSError с [Errno 2] ( ENOENT ) поднят. В Python 3 создается FileNotFoundError с [Errno 2] ( ENOENT ). В Python 3, поскольку FileNotFoundError является подклассом OSError , поймать последнего поймает первое.

Для удаления папок:

 os.rmdir(path, *, dir_fd=None) 

rmdir Удалить (удалить) путь к каталогу. Работает только тогда, когда каталог пуст, иначе OSError будет поднят. Чтобы удалить целые деревья shutil.rmtree() можно использовать shutil.rmtree() .

 shutil.rmtree(path, ignore_errors=False, onerror=None) 

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

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

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

 os.removedirs(name) 

os.removedirs(name) Удалить рекурсивные каталоги. Работает как rmdir (), за исключением того, что если каталог листов успешно удален, removeirs () пытается последовательно удалить каждый родительский каталог, упомянутый в пути, до тех пор, пока не будет поднята ошибка (которая игнорируется, поскольку обычно это означает, что родительский каталог не пуст ).

Например, os.removedirs ('foo / bar / baz') сначала удалит каталог «foo / bar / baz», а затем удалит «foo / bar» и «foo», если они пусты.

Синтаксис Python для удаления файла

 import os os.remove("/tmp/<file_name>.txt") 

ИЛИ

 import os os.unlink("/tmp/<file_name>.txt") 

Лучшая практика:
1. Сначала проверьте, выходит ли файл или папка или нет, а затем удаляет только этот файл. Это может быть достигнуто двумя способами:
а. os.path.isfile("/path/to/file")
б. Используйте exception handling.

ПРИМЕР для os.path.isfile

 #!/usr/bin/python import os myfile="/tmp/foo.txt" ## if file exists, delete it ## if os.path.isfile(myfile): os.remove(myfile) else: ## Show an error ## print("Error: %s file not found" % myfile) 

Обработка исключений

 #!/usr/bin/python import os ## get input ## myfile= raw_input("Enter file name to delete : ") ## try to delete file ## try: os.remove(myfile) except OSError, e: ## if failed, report it back to the user ## print ("Error: %s - %s." % (e.filename,e.strerror)) 

СООТВЕТСТВУЮЩИЙ ВЫХОД

 Введите имя файла для удаления: demo.txt
 Ошибка: demo.txt - нет такого файла или каталога.

 Введите имя файла для удаления: rrr.txt
 Ошибка: rrr.txt - операция не разрешена.

 Введите имя файла для удаления: foo.txt 

Синтаксис Python для удаления папки

 shutil.rmtree() 

Пример для shutil.rmtree()

 #!/usr/bin/python import os import sys import shutil # Get dir name mydir= raw_input("Enter directory name : ") ## Try to remove tree; if failed show an error using try...except on screen try: shutil.rmtree(mydir) except OSError, e: print ("Error: %s - %s." % (e.filename,e.strerror)) 

Создайте функцию для вас, ребята.

 def remove(path): """ param <path> could either be relative or absolute. """ if os.path.isfile(path): os.remove(path) # remove the file elif os.path.isdir(path): shutil.rmtree(path) # remove dir and all contains else: raise ValueError("file {} is not a file or dir.".format(path)) 

Вы можете использовать встроенный модуль pathlib (требуется Python 3.4+, но есть резервные копии для более старых версий на PyPI: pathlib , pathlib2 ).

Для удаления файла существует метод unlink :

 import pathlib path = pathlib.Path(name_of_file) path.unlink() 

Или метод rmdir для удаления пустой папки:

 import pathlib path = pathlib.Path(name_of_folder) path.rmdir()