Создать пустую папку python

Создание и удаление директорий с помощью Python

Эта статья продолжает нашу серию рассказов о взаимодействии с файловой системой в Python. В предыдущих разговор шёл о чтении и записи файлов. Любопытно, что файловая система — это гораздо больше, чем способ сохранять/извлекать данные на диск или с диска. Также есть разные типы объектов, такие как файлы, директории, сокеты (для межпроцессного взаимодействия), именованные каналы (pipes), как мягкие (символьные), так и жёсткие ссылки, а также специальные файлы устройств. Запись и чтение в них или из них делается примерно так же, как мы видели в предыдущих статьях.

Эта статья посвящена работе с директориями. Другие операционные системы, такие как UNIX/Linux, используют другую терминологию, где “папка” именуется “каталогом”. Далее мы вам покажем, как определить текущую рабочую директорию, как создать постоянную и временную, одиночную и вложенные структуры с подкаталогами, и как удалить директорию, если она больше не нужна. Здесь в игру вступают два модуля Python: os и tempfile .

Требуемые модули Python

Чтение и запись файлов не нуждаются в загрузке дополнительных модулей, но для доступ к функциям файловой системы (таким как управление директориями) требуется, чтобы мы использовали отдельный модуль. Во-первых, нужно загрузить модуль os . Он принадлежит к основной части экосистемы Python. Он подключается с помощью выражения:

Модуль os содержит большинство методов, которые нам понадобятся на протяжении этой статьи. Хотя, как будет видно позже, если вы хотите чего-то более продвинутого, такого как создать временный файл для хранения данных, то нам также будет нужен модуль tempfile .

Читайте также:  Img src data base64 php

Определяем текущую рабочую директорию

Прежде чем мы возьмёмся за создание/удаление директорий, давайте посмотрим, как выполнять простейшие операции с директориями, например определять текущий рабочий каталог, используя метод getcwd() . Этот метод вернёт строку, содержащую путь к вашей рабочей директории. Листинг 1 показывает, как интегрировать этот метод в скрипт на Python.

# импорт модуля os import os # определяем текущий каталог и печатаем path = os.getcwd() print ("Текущая рабочая директория %s" % path)

Вывод должен выглядеть следующим образом:

$ python3 cwd.py Текущая рабочая директория /home/sergey/

Более того, модуль os содержит дополнительный метод getcwdb() . Он похож на метод getcwd() , но в отличие от него нозвращает путь как двоичную строку.

Есть и некоторые другие операции с директориями, не затронутые в этой статье, такие как проверка наличия файла или каталога. Но сейчас перейдём к главной цели этой статьи.

Создание директории

Одиночная директория создаётся методом mkdir() . В качестве параметра mkdir() запрашивает путь к каталогу, чтобы создать его. Для примера рассмотрим код ниже:

import os # определим имя директории, которую создаём path = "/tmp/year" try: os.mkdir(path) except OSError: print ("Создать директорию %s не удалось" % path) else: print ("Успешно создана директория %s " % path)

Имейте в виду, что метод mkdir() не может создавать подкаталоги уровнем глубже первого за один вызов. Чтобы создать путь целиком, вам нужно вызвать mkdir() один раз для каждого уровня. Иначе, если вы хотите создать множество каталогов за один раз, воспользуйтесь вместо этого методом makedirs() (который вы можете увидеть в листинге 4 ниже).

В качестве вспомогательного параметра можно определить права доступа к директории внутри вызова mkdir() . Настройки по умолчанию суть 777, это означает, что читать и писать могут хозяин, члены группы и все остальные пользователи. Если вам нужны более строгие настройки, такие как 755, (доступно для чтения всем пользователям, права на запись есть только у хозяина), вы можете вызвать его так:

import os # определим имя директории, которую создаём path = "/tmp/year" # define the access rights access_rights = 0o755 try: os.mkdir(path, access_rights) except OSError: print ("Создать директорию %s не удалось" % path) else: print ("Успешно создана директория %s" % path)

Вы могли заметить, что права доступа (в данном сдучае 755) определены через восьмеричный префикс ( 0o ), так что вам не придётся переводить число в десятичный формат. Поскольку операционная система представляет права доступа в восьмеричном виде, мы их представим так же.

Хотя, как гласит документация Python, некоторые системы игнорируют параметр mode , вместо него следует использовать os.chmod .

Создание директории с подкаталогами

Как уже было упомянуто выше, метод mkdir() позволяет нам создать только одиночную директорию. Чтобы создать многоуровневые подкаталоги, приходит на помощь метод makedirs() . В самом деле, makedirs() имплементируется так, что он вызывает mkdir() , чтобы создавать директории одну за другой.

В качестве параметра makedirs() принимает путь целиком. Этот метод схож с командой UNIX/Linux mkdir -p . Листинг 4 показывает пример того, как его применять.

import os # определим имя директории, которую создаём path = "/tmp/year/month/week/day" try: os.makedirs(path) except OSError: print ("Создать директорию %s не удалось" % path) else: print ("Успешно создана директория %s" % path)

Созддание временной директории

До сих пор мы создавали постоянные элементы в файловой системе. По разным причинам, таким как временное хранение данных, может понадобиться иметь временный каталог. Модуль tempfile содержит методы, обрабатывающие подобые случаи безопасным и последовательным способом.

Листинг 5 показывает пример того, как используется метод TemporaryDirectory() в комбинации с выражением with . После with временная директория больше не существует, потому что и каталог, и его содержимое полностью удалены.

import tempfile # создаём временную директорию with tempfile.TemporaryDirectory() as directory: print('Создана временная директория %s' % directory) # каталог и его содержимое удалены

Листинг 6 показывает вывод скрипта на Python из листинга 5. Чтобы создать временные файлы, в системах UNIX/Linux выбираются три директории /tmp, /var/tmp и /usr/tmp, и берётся первый подходящий каталог. В данном случае использутся /tmp.

$ python3 mkdir-temporary.py Создана временная директория /tmp/tmpf6o0hy3c

(в вашем случае, скорее всего, каталог будет называться по-другому – примечание)

Удаление директории

Это операция, противоположная её созданию. Вы можете это сделать, используя метод rmdir() из модуля os . rmdir() запрашивает путь в виде строки, содержащей имя каталога, и удаляет только самый глубокий элемент в строке пути. Заметьте, что это работает лишь тогда, когда директория совершенно пуста. Если же она не пуста, возбуждается исключение OSError . Листинг 7 показывает соответствующий код на Python.

import os # определим имя директории, которую удаляем path = "/tmp/year" try: os.rmdir(path) except OSError: print ("Удалить директорию %s не удалось" % path) else: print ("Успешно удалена директория %s" % path)

В случае, когда вы хотите удалить целое дерево каталогов, метод rmtree() из модуля shutil поможет вам в этом.

Вывод

Как вы уже моли заметить, работа с директориями в Python очень проста. От вас требуется лишь несколько строк кода, чтобы создать или удалить этот тип файловых объектов.

Источник

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 –

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.

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.

Directory 'GeeksforGeeks' created Directory 'Geeks' created
Traceback (most recent call last): File "gfg.py", line 18, in os.mkdir(path) FileExistsError: [WinError 183] Cannot create a file when that file / /already exists: 'D:/Pycharm projects/GeeksForGeeks'
[WinError 183] Cannot create a file when that file/ /already exists: 'D:/Pycharm projects/GeeksForGeeks'

Using os.makedirs()

os.makedirs() method in Python is used to create a directory recursively. That means while making leaf directory if any intermediate-level directory is missing, os.makedirs() method will create them all.
For example, consider the following path:

D:/Pycharm projects/GeeksForGeeks/Authors/Nikhil

Suppose we want to create directory ‘Nikhil’ but Directory ‘GeeksForGeeks’ and ‘Authors’ are unavailable in the path. Then os.makedirs() method will create all unavailable/missing directories in the specified path. ‘GeeksForGeeks’ and ‘Authors’ will be created first then ‘Nikhil’ directory will be created.

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 newly created directory. If this parameter is omitted then the default value Oo777 is used.
exist_ok (optional): A default value False is used for this parameter. If the target directory already exists an OSError is raised if its value is False otherwise not. Return Type: This method does not return any value.

Источник

Оцените статью