- Modules in Python: Remove Files & Directories
- How To Delete a File
- Как удалять файлы и каталоги в Python
- Удаление файлов
- Сопоставление с образцом
- Удаление каталогов (папок)
- Выводы
- Python Delete Files and Directories
- Overview
- Delete a File with Python os.remove()
- Python delete file if exists
- Delete a File using os.unlink()
- Delete a File using pathlib.Path.unlink()
- Python Delete Empty Directory using os.rmdir()
- Python Delete Directory With Files using shutil.rmtree()
- Delete Multiple Files using Pattern matching
- Conclusion
Modules in Python: Remove Files & Directories
Estamos traduciendo nuestros guías y tutoriales al Español. Es posible que usted esté viendo una traducción generada automáticamente. Estamos trabajando con traductores profesionales para verificar las traducciones de nuestro sitio web. Este proyecto es un trabajo en curso.
Many applications use temporary files to hold intermediate results in their execution. A program, for example, may process several gigabytes of data in multiple passes because trying to hold it all in memory can exceed the ability of the system, even with a large swap store. This is true when multiple copies of an application are running. Holding all the data in memory can slow down the application because the virtual memory system has to keep paging data in and out of working memory. When the application is finished with the temporary files, it’s a good idea to delete that working file, to free up the disk space.
Other applications may generate a report or transaction file as part of their work. If the program encounters a fatal problem and does not finish completely, the best practice is to remove the incomplete output.
This guide describes the tasks, how the tasks are done in a shell, and the equivalent Python code:
- Delete a single file
- Delete multiple files using glob filename syntax
- Delete an empty directory
- Delete a directory that still contains files
- Show how to use glob syntax for file names
- Show an alternative using the Python “pathname” module
How To Delete a File
While other scripting languages require programmers to use external shell commands to delete files, Python provides built-in modules that perform the same functions as the shell commands.
To delete a file in Python, you must have ownership of the file as well as write and execute permissions for the directory that contains the file. In a shell, you use the rm or unlink command to delete a file, symlink, or hard link.
To delete a file named example.txt , use the following command:
It’s important to exercise caution when using rm or unlink commands, as files can be permanently deleted from the file system without any confirmation.
Как удалять файлы и каталоги в 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 ошибка FileNotFoundError . И os.remove() и os.unlink() могут удалять только файлы, но не каталоги. Если указанный путь указывает на каталог, они IsADirectoryError ошибку IsADirectoryError .
Для удаления файла требуется разрешение на запись и выполнение для каталога, содержащего файл. В противном случае вы получите ошибку PermissionError .
Чтобы избежать ошибок при удалении файлов, вы можете использовать обработку исключений, чтобы перехватить исключение и отправить соответствующее сообщение об ошибке:
import os file_path = '/tmp/file.txt' try: os.remove(file_path) except OSError as e: print("Error: %s : %s" % (file_path, e.strerror))
Модуль pathlib доступен в Python 3.4 и выше. Если вы хотите использовать этот модуль в Python 2, вы можете установить его с помощью pip. pathlib предоставляет объектно-ориентированный интерфейс для работы с путями файловой системы для различных операционных систем.
Чтобы удалить файл с pathlib модуля pathlib , создайте объект Path указывающий на файл, и вызовите метод unlink() для объекта:
from pathlib import Path file_path = Path('/tmp/file.txt') try: file_path.unlink() except OSError as e: print("Error: %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("Error: %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("Error: %s : %s" % (f, e.strerror))
Модуль pathlib включает две функции glob, 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("Error: %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("Error: %s : %s" % (dir_path, e.strerror))
В качестве альтернативы вы можете удалить каталоги с pathlib модуля pathlib :
from pathlib import Path dir_path = Path('/tmp/img') try: dir_path.rmdir() except OSError as e: print("Error: %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("Error: %s : %s" % (dir_path, e.strerror))
Аргумент, переданный в shutil.rmtree() не может быть символической ссылкой на каталог.
Выводы
Python предоставляет несколько модулей для работы с файлами.
Мы показали вам, как использовать os.remove() , os.unlink() , pathlib.Path.unlink() для удаления одного файла, os.rmdir() и pathlib.Path.rmdir() для удаления пустого файла. directory и shutil.rmtree() для рекурсивного удаления каталога и всего его содержимого.
Будьте особенно осторожны при удалении файлов или каталогов, потому что после удаления файла его будет нелегко восстановить.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Python Delete Files and Directories
Python Delete Files and Directories : In this article we will see how to delete a python file or folder.
Overview
In python, there are several ways to delete a file or folder. This is often used in programming to avoid doing this action manually. For example, we have a program that creates logs every day and we want to delete them at the end of the day. You can delete all existing log files to make place for the next day’s new file.
There are 5 ways to Python Delete Files and Directories in python :
- os.remove() – Deleting a file
- os.unlink() – Deleting a file
- pathlib.Path.unlink() – Deleting a file
- os.rmdir() – Deleting a directory
- shutil.rmtree() – Deleting a directory containing multiple files recursively
We will therefore review these different methods with an example to illustrate them.
Note : Deleting a file requires write and execute permission on the directory containing the file. Otherwise, you will get an ErrorPermission.
Delete a File with Python os.remove()
When working with files in python, it is often necessary to remove a particular file and this is where the os.remove() function comes in handy. It allows you to simply delete a file and its syntax and is easy to understand:
The first thing to do is to import the OS module that contains the remove() function. The OS module is a library often used in python to interact with the operating system.
The remove() function takes a single parameter that corresponds to the location of the file. The path can be absolute or relative :
import os os.remove("/home/amiradata/python/data.csv") # Absolute Path os.remove("data.csv") # Relative Path
Note : The os.remove() function only works if you want to delete a file. If you want to delete a folder with this function, it will return an error in your code.
Python delete file if exists
When we want to delete a file, it is important to check if this file really exists on the computer in order to avoid that the program returns an error saying that the file does not exist. Here is an example of an error returned when python can’t find the file specified in the remove() function:
import os os.remove("data.csv")
Traceback (most recent call last): File "test.py", line 3, in os.remove("data.csv") FileNotFoundError: [WinError 2] Le fichier spécifié est introuvable: 'data.csv'
To verify that the file exists, our beloved OS module has a function to check the existence of a file called os.path.exists(). Here is the code to do this verification.
import os filePath = 'data.csv'; if os.path.exists(filePath): os.remove(filePath) else: print("Can't delete the file : Doesn't exist !")
Can't delete the file : Doesn't exist !
Delete a File using os.unlink()
the os.unlink() function works on the same principle as os.remove(). Here is the syntax of the function:
import os os.unlink("data.csv")
This function only works with files. If you specify a folder, you will get an IsADirectoryError error.
Delete a File using pathlib.Path.unlink()
The pathlib module is available since Python 3.4. Before this version, you will have to install it yourself with the help of pip. This module provides an object-oriented interface that allows you to work with file system paths on different operating systems.
To delete a file using this function, you will need to run the following code :
from pathlib import Path file = Path('/home/amiradata/python/data.csv') try: file.unlink() except OSError as e: print("Error: %s : %s" % (file, e.strerror))
The try-catch makes it possible to check if the file exists well before deleting it. If the file does not exist, it raises an OSError exception.
Python Delete Empty Directory using os.rmdir()
We saw earlier that it was impossible to delete a folder with the os.remove(), os.unlink() and pathlib.Path.unlink() functions. The OS module therefore offers the os.rmdir() method which allows to delete an empty folder only.
Here is the syntax of the function os.rmdir()
The os.rmdir() method accepts a parameter that corresponds to the path of the folder you want to delete.
And here is an example of the function :
import os os.rmdir(/home/amiradata/java)
Note: os.rmdir() returns a Permission denied if the folder is not empty
Python Delete Directory With Files using shutil.rmtree()
we have seen that the os.rmdir() method only allows to delete empty directories. The shutil.rmtree() method allows to solve this kind of problem. It allows to delete all the contents of a folder (whether files or sub-folders). Here is the syntax :
import shutil shutil.rmtree(file)
import shutil shutil.rmtree(/home/amiradata/python)
This function did remove the python folder but also the data.csv file.
Note: This function is very dangerous because it deletes everything without any system check. So you can easily lose your data by using this function. I advise you to use it sparingly.
Delete Multiple Files using Pattern matching
If you want to delete several .txt files from a folder for example you can use the glob module in the following way:
import os import glob files = glob.glob('/home/amiradata/python/**/*.txt', recursive=True) for f in files: try: os.remove(f) except OSError as e: print("Error: %s : %s" % (f, e.strerror))
This code will search all the txt files in the subfolders of the python folder and will delete recursively using the recursive=True parameter.
Conclusion
We have seen that the Python language provides several modules to manage the deletion of files or folders. I advise you to be very careful in the use of these functions, it can be difficult to get them back afterwards (they are not moved in the recycle bin 🙂 ).
If you need help using these functions, please don’t hesitate to leave me a comment!
If you want to learn more about python, you can read this book (As an Amazon Partner, I make a profit on qualifying purchases) :
I’m a data scientist. Passionate about new technologies and programming I created this website mainly for people who want to learn more about data science and programming 🙂