10 ответов:
os.remove()удаляет файл.
os.rmdir()удаляет пустой каталог.
shutil.rmtree()удалить каталог и все его содержимое.
pathlib.Path.unlink()удаляет файл или символическую ссылку.
pathlib.Path.rmdir()удаляет пустой каталог.
синтаксис Python для удаления файла
import os os.remove("/tmp/<file_name>.txt")или
import os os.unlink("/tmp/<file_name>.txt")лучшие практики
- сначала проверьте, существует ли файл или папка, а затем удалите только этот файл. Это может быть достигнуто двумя способами :
а.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синтаксис Python для удаления папки
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))
для удаления файлов:
можно использовать
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(path, ignore_errors=False, onerror=None)
shutil.rmtreeудалить все дерево каталогов. Путь должен указывать на каталог (но не на символическую ссылку в каталог).если ignore_errors имеет значение true, ошибки, возникающие в результате неудачных удалений, будут игнорироваться, а если false или опущены, такие ошибки обрабатываются путем вызова обработчика, указанного onerror, или, если это опущено, они вызывают исключение.
Читайте также:
os.removedirs(name)
os.removedirs(name)удалить каталоги рекурсивно. Работает как rmdir () за исключением того, что, если конечный каталог успешно удален, removedirs () пытается последовательно удалить каждый родительский каталог, упомянутый в path, пока не будет вызвана ошибка (которая игнорируется, потому что обычно это означает, что родительский каталог не пуст).например, ОС.removedirs (с'Foo/бар/баз') сначала удалить каталог с 'Foo/бар/баз', а затем снять с 'foo/bar' и 'фу', если они пустые.
создать функции для вас.
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+, но есть backports для более старых версий на 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()
Как удалить файл или папку в Python?
для Python 3, чтобы удалить файл и папку по отдельности, используйте
unlinkиrmdirPathметоды объекта соответственно: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-это
shutil.rmtree-это асинхронная функция, поэтому, если вы хотите проверить, когда он будет завершен, вы можете использовать while...петля
import os import shutil shutil.rmtree(path) while os.path.exists(path): pass print('done')
import os folder = '/Path/to/yourDir/' fileList = os.listdir(folder) for f in fileList: filePath = folder + '/'+f if os.path.isfile(filePath): os.remove(filePath) elif os.path.isdir(filePath): newFileList = os.listdir(filePath) for f1 in newFileList: insideFilePath = filePath + '/' + f1 if os.path.isfile(insideFilePath): os.remove(insideFilePath)
я рекомендую использовать
subprocessесли написание красивого и читаемого кода-это ваша чашка чая:import subprocess subprocess.Popen("rm -r my_dir", shell=True)и если вы не инженер-программист, то, возможно, рассмотреть возможность использования Jupyter; вы можете просто ввести команды bash:
!rm -r my_dirтрадиционно, вы используете
shutil:import shutil shutil.rmtree(my_dir)
Comments