Как сделать папку python

Обновлено: 06.07.2024

В этой статье вы узнаете все, об управлении каталогами и файлами. А именно:

  1. Создание каталога
  2. Переименование каталога
  3. Перечисление всех каталогов и работа с ними

Текущий каталог Python

Получение текущего каталога, то есть каталог в котором, на данный момент находится ваш скрипт, осуществляется с помощью функции getcwd() . Данная функция вернет нам текущий каталог в виде строки.

Изменение каталога

С помощью метода chdir() , мы сможем изменить текущий рабочий каталог. Новый путь на который мы хотим изменить положение каталога, необходимо передать в качестве строки, нашей функции. Рассмотрим пример:

Список файлов в каталоге Python

Используя метод listdir() мы извлечем все файлы и подкаталоги внутри корневого каталога. Данный метод принимает путь в качестве строки, и возвращает список подкаталогов и файлов. В случае, если не указан путь, он вернет список из текущего каталога.

Создание нового каталога Python

Новый каталог создается так же просто, как и все остальные операции, для этого достаточно воспользоваться функцией mkdir() . Данный метод в качестве аргумента принимает путь к новому каталогу. Если же путь не указан, то новый каталог будет создан в текущей директории.

Переименование каталога в Python

Метод rename() , поможет вам переименовать будь то каталог, или файл. Данный метод принимает два аргумента. Первый аргумент, это старое название, а второй это соответственно новое название.

Удаление файла в Python

С помощью метода remove() , мы можем удалить файлы, или используем метод rmdir() , для удаление пустого каталога.

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

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

Модуль os содержит подмодуль os.path , который позволяет работать с путями файлов и папок. Импортировать этот модуль отдельно не нужно, достаточно выполнить import os .

Присоединение одной части пути к другой

Работа с путями к файлам и папкам как с простыми строками чревата множеством ошибок и может создать проблемы при переносе программы между различными операционными системами. Правильный путь объединить две части пути — это использование os.path.join :

Извлечение имени файла из пути

Функция os.path.split совершает обратное действие — отрезает имя файла или ниже лежащей папки от пути:

Извлечение расширения

Кроме того, может пригодиться функция os.path.splitext , котоая отрезает расширение файла:

Проверка типа файла

Кроме прочего, модуль os.path содержит функции для проверки существования файла и для определения его типа:

Создание файла

Нет ничего проще, чем создать пустой файл, достаточно открыть несуществующий файл с флагом 'x' :

Конечно, можно было бы использовать флаг 'w' , но тогда уже существующий файл был бы стёрт. С флагом 'x' open либо создаст новый файл, либо выбросит ошибку.

Создание папки

Для создания новой папки используйте os.mkdir(name) . Эта функция выбросит ошибку, если по указанному пути уже существует файл или папка. Если вам нужно создать сразу несколько вложенных папок, то смотрите функцию os.makedirs(name, exist_ok=False) .

Перемещение и переименование

Для удобной манипуляции с файлами и папками в стандартной библиотеки Python существует специальный модуль shutil . Функция shutil.move(source, destination) позволяет вам переместить любой файл или папку (даже непустую). Обратите внимание, что если destination — это уже существующая папка, то файл/папка будет перемещена внутрь неё, в остальных случаях файл/папка будут скопированы точно по нужному адресу. В случае успеха, функция вернёт новое местоположение файла. Если destination существует и не является папкой, то будет выброшена ошибка.

Как же переименовать файл? Несмотря на то, что os содержит специальную функцию для переименования, нужно понимать, что в рамках одной файловой системы перемещение и переименование — это одно и то же. Когда вы переименовываете файл, его содержимое не переписывается на носителе в другое место, просто файловая система теперь обозначает его положение другим путём.

Копирование

Удаление

Удалить файл можно с помощью функции os.remove , а пустую папку с помощью функции os.rmdir .

А вот для удаления папки с содержимым вновь понадобится shutil . Для удаления такой папки используйте shutil.rmtree .

Будьте осторожны, команды удаления стирают файл, а не перемещают его в корзину, вне зависимости от операционной системы! После такого удаления восстановить файл может быть сложно или вовсе невозможно.

  1. В текущей папке лежат файлы с расширениями .mp3 , .flac и .oga . Создайте папки mp3 , flac , oga и положите туда все файлы с соответствующими расширениями.
  2. В текущей папке лежит две других папки: vasya и mila , причём в этих папках могут лежать файлы с одинаковыми именами, например vasya/kursovaya.doc и mila/kursovaya.doc . Скопируйте все файлы из этих папок в текущую папку назвав их следующим образом: vasya_kursovaya.doc , mila_test.pdf и т.п.
  3. В текущей папке лежат файлы следующего вида: S01E01.mkv , S01E02.mkv , S02E01.mkv и т.п., то есть все файлы начинаются с S01 или S02 . Создайте папки S01 и S02 и переложите туда соответствующие файлы.
  4. В текущей папке лежат файлы вида 2019-03-08.jpg , 2019-04-01.jpg и т.п. Отсортируйте файлы по имени и переименуйте их в 1.jpg , 2.jpg , …, 10.jpg , и т.д.
  5. В текущей папке лежат две другие папки: video и sub . Создайте новую папку watch_me и переложите туда содержимое указанных папок (сами папки класть не надо).
  6. В текущей папке лежат файлы типа Nina_Stoletova.jpg , Misha_Perelman.jpg и т.п. Переименуйте их переставив имя и фамилию местами.
  7. В текущей папке лежит файл list.tsv , в котором с новой строки написаны имена некоторых других файлов этой папки. Создайте папку list и переложите в неё данные файлы.

Для тестирования вашей программы положите в репозиторий файлы и папки с соответствующими именами. Файлы должны быть пустыми, если не указано обратного.

В последнее время Python является одним из наиболее часто используемых языков для различных задач, таких как обработки данных, анализ данных и создание веб-сайтов. В этом процессе существуют различные задачи, которые зависят от операционной системы. Python позволяет разработчику использовать несколько OS-зависимых функций с модулем OS. Этот пакет абстрагирует функциональные возможности платформы и предоставляет функции python для навигации, создания, удаления и изменения файлов и папок. В этом руководстве вы можете узнать, как импортировать этот пакет, его основные функции и пример проекта на python, который использует эту библиотеку для задачи объединения данных.

Некоторые основные функции

Давайте рассмотрим модуль с примером кода.

Давайте получим список методов, которые мы можем использовать с этим модулем.

Теперь, используя метод getcwd, мы можем получить путь к текущему рабочему каталогу.

Список папок и файлов

Давайте перечислим папки / файлы в текущем каталоге, используя listdir:

Как видите, у меня есть 2 папки: Data и Population_Data. У меня также есть 3 файла: файл разметки README.md и два файла Python, а именно, tutorial.py и tutorial_v2.py.

Чтобы получить всю древовидную структуру папки моего проекта, давайте напишем функцию и затем используем os.walk(), чтобы перебрать все файлы в каждой папке текущего каталога.

Вызовите эту функцию, используя текущий путь к рабочей директории, который мы видели как это сделать ранее:

Вывод был усечен для краткости.

Как видно из вывода, имена папок оканчиваются на /, а файлы внутри папок имеют отступ с четырьмя пробелами справа. В папке Data есть один CSV-файл с именем uscitiesv1.4.csv. Этот файл содержит данные о населении для каждого города в Соединенных Штатах. Папка Population_Data содержит папки для состояний, содержащие отдельные csv-файлы для данных о населении для каждого состояния, извлеченные из uscitiesv1.4.csv.

Изменить рабочий каталог

Теперь давайте снова запустим метод list_files, но в этом каталоге.

Как видите, мы вошли в папку New York в папке Population_Data.

Создать единую и вложенную структуру каталогов

Теперь давайте создадим новый каталог с именем testdir в этом каталоге.

Как видите, он создает новый каталог в текущем рабочем каталоге.

Давайте создадим вложенный каталог с 2 уровнями.

В ответ мы получим:

Мы получаем ошибку. Чтобы быть конкретным, мы получаем FileNotFoundError. Вы можете спросить, почему ошибка FileNotFound, когда мы пытаемся создать каталог.

Причина: модуль Python ищет каталог с именем level1dir для создания каталога level2dir. Так как level1dir не существует, он выдает FileNotFoundError.

Для подобных целей вместо этого используется функция mkdirs(), которая может рекурсивно создавать несколько каталогов.

Проверьте текущее дерево каталогов,

Как мы видим, теперь у нас есть две подкаталоги в папке New York. testdir и level1dir. level1dir имеет каталог под названием level2dir.

Рекурсивно удалить один или несколько каталогов

Модуль os также имеет методы для изменения или удаления каталогов, которые я покажу здесь.

Теперь давайте удалим каталоги, которые мы только что создали, используя rmdir:

Проверьте текущее дерево каталогов, чтобы убедиться, что каталог больше не существует:

Должно получится следующее:

Как видите, testdir был удален.

Давайте попробуем удалить структуру вложенных каталогов level1dir и level2dir.

В результате мы получим:

Как видно, этот код бросает ошибку OSError и это правильно. Он говорит, что каталог level1dir не пуст. Это правильно, потому что под ним есть level2dir.

С помощью метода rmdir невозможно удалить непустой каталог, аналогичный версии командной строки Unix.

Так же, как и метод makedirs(), давайте попробуем rmdirs(), который рекурсивно удаляет каталоги в древовидной структуре.

Давайте снова посмотрим на структуру дерева каталогов:

Это подводит нас к предыдущему состоянию каталога.

Пример с обработкой данных

До сих пор мы изучали, как просматривать, создавать и удалять структуру вложенных каталогов. Теперь давайте посмотрим, как модуль os помогает в обработке данных.

Для этого давайте поднимемся на один уровень выше в структуре каталогов.

С этим, давайте снова рассмотрим структуру дерева каталогов.

В ответ мы получим:

Давайте объединяем данные из всех состояний, перебирая каталог каждого состояния и аналогично объединяя файлы CSV.

Частично благодаря модулю os мы смогли создать merge_data, который представляет собой фрейм данных, содержащий данные о населении из каждого штата.

Заключение

В этой статье мы кратко рассмотрели различные возможности встроенного в Python модуля os. Мы также увидели краткий пример того, как этот модуль можно использовать в мире наук о данных и аналитики. Важно понимать, что ОС может предложить гораздо больше, и исходя из потребностей разработчика, можно построить гораздо более сложную логику.

Directory — это в основном структура, которая содержит все соответствующие документы, файлы и папки.

Модуль os содержит несколько функций для управления каталогами в Python.

Функции каталогов Python

1. Создание нового каталога

Модуль Python os предоставляет функцию mkdir() для создания нового каталога.

Create Directory

2. Получить текущий рабочий каталог

Функция getcwd() используется для получения местоположения CWD.

3. Переименовать

Функция rename() используется для переименования CWD.

4. Получить список файлов и каталогов

Функция listdir() используется для получения списка всех каталогов и файлов, имеющихся в текущем каталоге.

5. Как удалить каталог

Функция rmdir() используется для удаления каталога, который уже пуст. Если каталог не пустой, он не будет удален.

Читайте также: