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

python file-io directory delete-file


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




Answer 1 RichieHindle



Path Объекты пути из модуля pathlib Python 3.4+также предоставляют следующие методы экземпляров:




Answer 2 anand tripathi


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

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

Or

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

Or

pathlib Библиотека для Python версии> 3.5

file_to_rem = pathlib.Path("/tmp/<file_name>.txt")
file_to_rem.unlink()

Path.unlink(missing_ok=False)

Метод Unlink используется для удаления файла или символической ссылки.

Если значение параметра missing_ok равно false (по умолчанию),то FileNotFoundError повышается,если путь не существует.
Если значение параметра missing_ok равно true,исключения FileNotFoundError будут проигнорированы (такое же поведение,как и при выполнении команды POSIX rm -f).
Изменено в версии 3.8:Добавлен параметр missing_ok.

Передовая практика

  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 the file ##
try:
    os.remove(myfile)
except OSError as e:  ## if failed, report it back to the user ##
    print ("Error: %s - %s." % (e.filename, e.strerror))

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

Enter file name to delete : demo.txt
Error: demo.txt - No such file or directory.

Enter file name to delete : rrr.txt
Error: rrr.txt - Operation not permitted.

Enter file name to delete : foo.txt

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

shutil.rmtree()

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

#!/usr/bin/python
import os
import sys
import shutil

# Get directory 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 as e:
    print ("Error: %s - %s." % (e.filename, e.strerror))



Answer 3 Mihai Maruseac


Use

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

(См. Полную документацию по шутилу ) и / или

os.remove

and

os.rmdir

(Полная документация на ОС .)




Answer 4 flycee


Вот надежная функция, которая использует os.remove и shutil.rmtree :

def remove(path):
    """ param <path> could either be relative or absolute. """
    if os.path.isfile(path) or os.path.islink(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))



Answer 5 MSeifert


Вы можете использовать встроенный модуль 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()