- Python Directory
- Get the current working directory
- Join and split a path
- Test if a path is a directory
- Create a directory
- Rename a directory
- Delete a directory
- Traverse a directory recursively
- Работа с файлами в Python с помощью модуля OS
- Вывод текущей директории
- Создание папки
- Изменение директории
- Создание вложенных папок
- Создание файлов
- Переименование файлов
- Перемещение файлов
- Список файлов и директорий
- Удаление файлов
- Удаление директорий
- Получение информации о файлах
- Create a directory in Python
- Using os.mkdir()
- Creating and Deleting Directories with Python
- Required Python Modules
- Detecting the Current Working Directory
- Creating a Directory
- Creating a Directory with Subdirectories
- Creating a Temporary Directory
- Создание и удаление директорий с помощью Python
- Требуемые модули Python
- Определяем текущую рабочую директорию
- Создание директории
- Создание директории с подкаталогами
- Созддание временной директории
- Удаление директории
- Вывод
Python Directory
Summary: in this tutorial, you’ll learn how to manipulate directories using Python built-in functions
Get the current working directory
The directory that the Python program is in is known as the current working directory for that program. In order to get the current working directory you’ll need to use the os module with the function getcwd() as follows:
To change the current working directory you can use function chdir(). You just pass the current working directory you want to change to as follows:
Join and split a path
To make a program work across platforms including Windows, Linux, and Unix, you need to use a platform-independent file and directory path. Python provides a submodule os.path that contains several useful functions and constants to join and split paths.
The join() function joins path components together and returns a path with exact platform separator for instance in windows backslash () and Unix (/)
The split() function splits path into path components without path separator. Here’s an example of using join() and split() functions:
Test if a path is a directory
In order to check a path exists in a system and a path is a directory you can use the functions exists() and isdir() in the submodule os.path as below:
Create a directory
To create a new directory you use mkdir() or makedirs() functions of os module. And you should always check if a directory exists first before creating a new directory.
The following example creates a new directory called python under the c:\temp directory.
Rename a directory
To rename the directory you use os.rename() function. You need to pass the directory you want to change and the new path.
Delete a directory
To delete a directory, you use function rmdir() function as follows:
Traverse a directory recursively
Python provides os.walk() function that allows you to traverse a directory recursively. The os.walk() function returns the root directory, the sub-directories, and files.
The following example shows how to print all files and directories in the c:\temp directory:
Источник
Работа с файлами в Python с помощью модуля OS
Обработка файлов в Python с помощью модуля os включает создание, переименование, перемещение, удаление файлов и папок, а также получение списка всех файлов и каталогов и многое другое.
В индустрии программного обеспечения большинство программ тем или иным образом обрабатывают файлы: создают их, переименовывают, перемещают и так далее. Любой программист должен обладать таким навыком. С этим руководством вы научитесь использовать модуль os в Python для проведения операций над файлами и каталогами вне зависимости от используемой операционной системы.
Важно знать, что модуль os используется не только для работы с файлами. Он включает массу методов и инструментов для других операций: обработки переменных среды, управления системными процессами, а также аргументы командной строки и даже расширенные атрибуты файлов, которые есть только в Linux.
Модуль встроенный, поэтому для работы с ним не нужно ничего устанавливать.
Вывод текущей директории
Для получения текущего рабочего каталога используется os.getcwd() :
os.getcwd() возвращает строку в Юникоде, представляющую текущий рабочий каталог. Вот пример вывода:
Создание папки
Для создания папки/каталога в любой операционной системе нужна следующая команда:
После ее выполнения в текущем рабочем каталоге тут же появится новая папка с названием «folder».
Если запустить ее еще раз, будет вызвана ошибка FileExistsError , потому что такая папка уже есть. Для решения проблемы нужно запускать команду только в том случае, если каталога с таким же именем нет. Этого можно добиться следующим образом:
Функция os.path.isdir() вернет True , если переданное имя ссылается на существующий каталог.
Изменение директории
Менять директории довольно просто. Проделаем это с только что созданным:
Еще раз выведем рабочий каталог:
Создание вложенных папок
Предположим, вы хотите создать не только одну папку, но и несколько вложенных:
Это создаст три папки рекурсивно, как показано на следующем изображении:
Создание файлов
Для создания файлов в Python модули не нужны. Можно использовать встроенную функцию open() . Она принимает название файла, который необходимо создать в качестве первого параметра и желаемый режим открытия — как второй:
w значит write (запись), a — это appending (добавление данных к уже существующему файлу), а r — reading (чтение). Больше о режимах открытия можно почитать здесь.
Переименование файлов
С помощью модуля os достаточно просто переименовать файл. Поменяем название созданного в прошлом шаге.
Функция os.rename() принимает 2 аргумента: имя файла или папки, которые нужно переименовать и новое имя.
Перемещение файлов
Функцию os.replace() можно использовать для перемещения файлов или каталогов:
Стоит обратить внимание, что это перезапишет путь, поэтому если в папке folder уже есть файл с таким же именем ( renamed-text.txt ), он будет перезаписан.
Список файлов и директорий
Функция os.listdir() возвращает список, который содержит имена файлов в папке. Если в качестве аргумента не указывать ничего, вернется список файлов и папок текущего рабочего каталога:
А что если нужно узнать состав и этих папок тоже? Для этого нужно использовать функцию os.walk() :
os.walk() — это генератор дерева каталогов. Он будет перебирать все переданные составляющие. Здесь в качестве аргумента передано значение «.», которое обозначает верхушку дерева:
Метод os.path.join() был использован для объединения текущего пути с именем файла/папки.
Удаление файлов
Удалим созданный файл:
os.remove() удалит файл с указанным именем (не каталог).
Удаление директорий
С помощью функции os.rmdir() можно удалить указанную папку:
Для удаления каталогов рекурсивно необходимо использовать os.removedirs() :
Это удалит только пустые каталоги.
Получение информации о файлах
Для получения информации о файле в ОС используется функция os.stat() , которая выполняет системный вызов stat() по выбранному пути:
Это вернет кортеж с отдельными метриками. В их числе есть следующие:
-
- st_size — размер файла в байтах
- st_atime — время последнего доступа в секундах (временная метка)
- st_mtime — время последнего изменения
- st_ctime — в Windows это время создания файла, а в Linux — последнего изменения метаданных
Для получения конкретного атрибута нужно писать следующим образом:
Источник
Create a directory in Python
The OS module in Python provides functions for interacting with the operating system. OS comes under Python’s standard utility modules. This module provides a portable way of using operating system dependent functionality. The os and os.path modules include many functions to interact with the file system. All functions in os module raise OSError in the case of invalid or inaccessible file names and paths, or other arguments that have the correct type but are not accepted by the operating system.
There are different methods available in the OS module for creating a director. These are –
Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.
To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning — Basic Level Course
Using os.mkdir()
os.mkdir() method in Python is used to create a directory named path with the specified numeric mode. This method raise FileExistsError if the directory to be created already exists.
Syntax: os.mkdir(path, mode = 0o777, *, dir_fd = None)
Parameter:
path: A path-like object representing a file system path. A path-like object is either a string or bytes object representing a path.
mode (optional): A Integer value representing mode of the directory to be created. If this parameter is omitted then default value Oo777 is used.
dir_fd (optional): A file descriptor referring to a directory. The default value of this parameter is None.
If the specified path is absolute then dir_fd is ignored.
Note: The ‘*’ in parameter list indicates that all following parameters (Here in our case ‘dir_fd’) are keyword-only parameters and they can be provided using their name, not as positional parameter.
Return Type: This method does not return any value.
Источник
Creating and Deleting Directories with Python
This article continues with our series on interacting with the file system in Python. The previous articles dealt with reading and writing files. Interestingly, the file system is much more than a way to store/retrieve data to disk. There are also various other types of entries such as files, directories, sockets (for inter-process communication), named pipes, both soft and hard links, as well as special files (block devices). Reading and writing from and to them is done in a similar way as we saw in the previous articles.
This article focuses on the handling of directories. Other operating systems, like UNIX/Linux, instead use a different terminology, where an «entry» is named a «folder». Next, we will show you how to identify the current working directory, how to create both a persistent and a temporary, single directory as well as nested directory structures with subfolders, and how to remove a directory if no longer needed. Therefore, the two Python modules os and tempfile come into play.
Required Python Modules
Reading and writing files does not require loading an additional module, but accessing the file system functions (like handling directories) requires that we use a separate module. First, the os module has to be loaded. os is a Python module which belongs to the core part of the Python ecosystem. It is done using an import statement as follows:
The os module contains most of the methods we’ll need throughout this article. However, as you’ll see later on, if you want to something more advanced, like create a temporary file for storing data, then we’ll also be needing the tempfile module.
Detecting the Current Working Directory
Before we get in to creating/removing directories, let’s see how to perform some other basic directory operations, like detecting the current working directory using the method getcwd() . This method will return a string containing the path of your working directory. Listing 1 shows how to integrate this method in a Python script.
The output should look something like this:
Furthermore, the os module contains the additional getcwdb() method. This one is similar to the getcwd() method but returns the path as a binary string, instead.
There are quite a few other directory operations not covered in this article, like checking if a file or directory exists. But for now we’ll move on to the main purpose of this article.
Creating a Directory
Creating a single directory is done using the mkdir() method. As a parameter, mkdir() first requires the path name for the directory in order for it to be created. For an example, see the code below:
Keep in mind that the mkdir() method cannot create sub-directories on a deeper level than one in a single call. To create an entire path you have to call mkdir() once per directory level. Alternatively, if you want to create multiple directories at once, make use of the makedirs() method instead (which you can see in Listing 4 below).
As an optional parameter you can specify the access rights to the directory within your mkdir() call. The default setting is 777, which means it is readable and writable by the owner, group members, and all other users as well. In case you require a more restrictive setting, like 755, (readable and accessible by all users, and write access by only the owner) you may call it as follows:
One thing to note about this code — you may have noticed that the access rights (755 here) are specified using the octal prefix ( 0o ), which is done so you don’t need to convert the number to decimal first. Since the OS represents the access permissions as octal, that’s how we’ll represent them here too.
However, as the Python documentation states, some systems ignore the mode parameter and you should use os.chmod instead.
Creating a Directory with Subdirectories
As already mentioned above, the mkdir() method allows us to create a single directory, only. To create multi-level subdirectories the makedirs() method comes into play. Actually, makedirs() is implemented in such a way that it calls mkdir() to create one directory after the next.
As a parameter makedirs() accepts the entire path to be created. This method is similar to the UNIX/Linux command mkdir -p . Listing 4 shows an example of how to use this method.
Creating a Temporary Directory
So far, we’ve created permanent entries in the file system. For various reasons like parking data temporarily it can be necessary to just have a temporary directory. The tempfile module contains methods that handle such cases in a safe and consistent way.
Listing 5 shows an example that uses the TemporaryDirectory() method in combination with the with statement. After the with statement the temporary directory does not exist anymore because both the directory, and its contents have been entirely removed.
Listing 6 shows the output of the Python script from Listing 5. In order to create temporary files, on UNIX/Linux systems the three directories /tmp, /var/tmp, and /usr/tmp are tried, and the first match of them is taken. In this current case it is the /tmp directory that is used.
Источник
Создание и удаление директорий с помощью Python
Эта статья продолжает нашу серию рассказов о взаимодействии с файловой системой в Python. В предыдущих разговор шёл о чтении и записи файлов. Любопытно, что файловая система — это гораздо больше, чем способ сохранять/извлекать данные на диск или с диска. Также есть разные типы объектов, такие как файлы, директории, сокеты (для межпроцессного взаимодействия), именованные каналы (pipes), как мягкие (символьные), так и жёсткие ссылки, а также специальные файлы устройств. Запись и чтение в них или из них делается примерно так же, как мы видели в предыдущих статьях.
Эта статья посвящена работе с директориями. Другие операционные системы, такие как UNIX/Linux, используют другую терминологию, где “папка” именуется “каталогом”. Далее мы вам покажем, как определить текущую рабочую директорию, как создать постоянную и временную, одиночную и вложенные структуры с подкаталогами, и как удалить директорию, если она больше не нужна. Здесь в игру вступают два модуля Python: os и tempfile .
Требуемые модули Python
Чтение и запись файлов не нуждаются в загрузке дополнительных модулей, но для доступ к функциям файловой системы (таким как управление директориями) требуется, чтобы мы использовали отдельный модуль. Во-первых, нужно загрузить модуль os . Он принадлежит к основной части экосистемы Python. Он подключается с помощью выражения:
Модуль os содержит большинство методов, которые нам понадобятся на протяжении этой статьи. Хотя, как будет видно позже, если вы хотите чего-то более продвинутого, такого как создать временный файл для хранения данных, то нам также будет нужен модуль tempfile .
Определяем текущую рабочую директорию
Прежде чем мы возьмёмся за создание/удаление директорий, давайте посмотрим, как выполнять простейшие операции с директориями, например определять текущий рабочий каталог, используя метод getcwd() . Этот метод вернёт строку, содержащую путь к вашей рабочей директории. Листинг 1 показывает, как интегрировать этот метод в скрипт на Python.
Вывод должен выглядеть следующим образом:
Более того, модуль os содержит дополнительный метод getcwdb() . Он похож на метод getcwd() , но в отличие от него нозвращает путь как двоичную строку.
Есть и некоторые другие операции с директориями, не затронутые в этой статье, такие как проверка наличия файла или каталога. Но сейчас перейдём к главной цели этой статьи.
Создание директории
Одиночная директория создаётся методом mkdir() . В качестве параметра mkdir() запрашивает путь к каталогу, чтобы создать его. Для примера рассмотрим код ниже:
Имейте в виду, что метод mkdir() не может создавать подкаталоги уровнем глубже первого за один вызов. Чтобы создать путь целиком, вам нужно вызвать mkdir() один раз для каждого уровня. Иначе, если вы хотите создать множество каталогов за один раз, воспользуйтесь вместо этого методом makedirs() (который вы можете увидеть в листинге 4 ниже).
В качестве вспомогательного параметра можно определить права доступа к директории внутри вызова mkdir() . Настройки по умолчанию суть 777, это означает, что читать и писать могут хозяин, члены группы и все остальные пользователи. Если вам нужны более строгие настройки, такие как 755, (доступно для чтения всем пользователям, права на запись есть только у хозяина), вы можете вызвать его так:
Вы могли заметить, что права доступа (в данном сдучае 755) определены через восьмеричный префикс ( 0o ), так что вам не придётся переводить число в десятичный формат. Поскольку операционная система представляет права доступа в восьмеричном виде, мы их представим так же.
Хотя, как гласит документация Python, некоторые системы игнорируют параметр mode , вместо него следует использовать os.chmod .
Создание директории с подкаталогами
Как уже было упомянуто выше, метод mkdir() позволяет нам создать только одиночную директорию. Чтобы создать многоуровневые подкаталоги, приходит на помощь метод makedirs() . В самом деле, makedirs() имплементируется так, что он вызывает mkdir() , чтобы создавать директории одну за другой.
В качестве параметра makedirs() принимает путь целиком. Этот метод схож с командой UNIX/Linux mkdir -p . Листинг 4 показывает пример того, как его применять.
Созддание временной директории
До сих пор мы создавали постоянные элементы в файловой системе. По разным причинам, таким как временное хранение данных, может понадобиться иметь временный каталог. Модуль tempfile содержит методы, обрабатывающие подобые случаи безопасным и последовательным способом.
Листинг 5 показывает пример того, как используется метод TemporaryDirectory() в комбинации с выражением with . После with временная директория больше не существует, потому что и каталог, и его содержимое полностью удалены.
Листинг 6 показывает вывод скрипта на Python из листинга 5. Чтобы создать временные файлы, в системах UNIX/Linux выбираются три директории /tmp, /var/tmp и /usr/tmp, и берётся первый подходящий каталог. В данном случае использутся /tmp.
(в вашем случае, скорее всего, каталог будет называться по-другому – примечание)
Удаление директории
Это операция, противоположная её созданию. Вы можете это сделать, используя метод rmdir() из модуля os . rmdir() запрашивает путь в виде строки, содержащей имя каталога, и удаляет только самый глубокий элемент в строке пути. Заметьте, что это работает лишь тогда, когда директория совершенно пуста. Если же она не пуста, возбуждается исключение OSError . Листинг 7 показывает соответствующий код на Python.
В случае, когда вы хотите удалить целое дерево каталогов, метод rmtree() из модуля shutil поможет вам в этом.
Вывод
Как вы уже моли заметить, работа с директориями в Python очень проста. От вас требуется лишь несколько строк кода, чтобы создать или удалить этот тип файловых объектов.
Источник