Как создать папку через python
Перейти к содержимому

Как создать папку через python

  • автор:

Как создать файл и папку python3?

выдаёт закономерный No such file or directory: ‘folder/file’ , если folder/polder не существует.

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

os.mkdir("имя вашей папки") 

Вопрос скорее заключался в ещё более лаконичном решении

nikitalol ★
19.08.21 19:09:03 MSK

парсить строку мне тоже влом

Зачем парсить когда есть встроенные средства для работы с путями? Воспользуйся os.path или pathlib .

А кодить тебе не влом? А постить глупые вопросы на форум не влом? Загуглить свой вопрос прежде чем постить на форум тебе тоже влом?

eternal_sorrow ★★★★★
( 19.08.21 19:16:03 MSK )
Последнее исправление: eternal_sorrow 19.08.21 19:17:25 MSK (всего исправлений: 1)

Ответ на: удаленный комментарий

os.makedirs(name, mode=0o755, exist_ok=True) 

tz4678 ★★
( 20.08.21 00:02:40 MSK )

xetiji
( 20.08.21 00:18:06 MSK )

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

  1. Ищи в питоне аналог команды dirname .
  2. Ищи в питоне аналог команды mkdir -p .

Дальше сам должен справиться.

theNamelessOne ★★★★★
( 20.08.21 01:45:02 MSK )

Забанься, клоун. Учись гуглить.

WitcherGeralt ★★
( 20.08.21 02:35:03 MSK )
Последнее исправление: WitcherGeralt 20.08.21 02:35:10 MSK (всего исправлений: 1)

Ответ на: комментарий от WitcherGeralt 20.08.21 02:35:03 MSK

Забанься, клоун. Учись искать нужную информацию сам.

anonymous
( 20.08.21 05:40:57 MSK )
Ответ на: комментарий от WitcherGeralt 20.08.21 02:35:03 MSK

И ладно, к предыдущему сообщению.

Перестань страдать гуглом головного мозга. Поисковых систем много, а ещё больше других источников информации.

anonymous
( 20.08.21 05:42:44 MSK )
Ответ на: комментарий от eternal_sorrow 19.08.21 19:16:03 MSK

Два чая этому господину

Aswed ★★★★★
( 20.08.21 10:22:35 MSK )
Ответ на: комментарий от Aswed 20.08.21 10:22:35 MSK

Зачем ему чай, да еще два? Лучше по 500 рублей сложитесь)

anonymous
( 20.08.21 10:40:05 MSK )
Ответ на: комментарий от anonymous 20.08.21 05:42:44 MSK

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

«Гуглить» — это давно нарицательное для широкой группы действий, означающих поиск, гуглить можно хоть в Яндексе и даже find -ом у себя на локалхосте.

WitcherGeralt ★★
( 20.08.21 10:59:42 MSK )
Последнее исправление: WitcherGeralt 20.08.21 11:25:53 MSK (всего исправлений: 1)

Ответ на: комментарий от anonymous 20.08.21 10:40:05 MSK

Я не против хорошего чайку выпить с утра. Два тоже не против.

eternal_sorrow ★★★★★
( 20.08.21 11:50:38 MSK )
Ответ на: комментарий от WitcherGeralt 20.08.21 10:59:42 MSK

зачем тогда нужен этот клоунский форум, если есть гугл?

anonymous
( 20.08.21 11:52:54 MSK )
Ответ на: комментарий от anonymous 20.08.21 11:52:54 MSK

Явно не для того, чтобы одноклеточные загаживали его тупейшими вопросами вместо чтения документации и гуглежа элементарных вещей.

WitcherGeralt ★★
( 20.08.21 11:58:44 MSK )
Ответ на: комментарий от WitcherGeralt 20.08.21 10:59:42 MSK

«Гуглить» — это давно нарицательное для широкой группы действий

Разве для балбесиков, которые заменяют слово искать на гуглить.

anonymous
( 20.08.21 12:02:47 MSK )
Ответ на: комментарий от anonymous 20.08.21 12:02:47 MSK

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

WitcherGeralt ★★
( 20.08.21 12:05:41 MSK )
Последнее исправление: WitcherGeralt 20.08.21 12:05:55 MSK (всего исправлений: 1)

Ответ на: комментарий от WitcherGeralt 20.08.21 12:05:41 MSK

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

anonymous
( 20.08.21 14:14:59 MSK )
Ответ на: комментарий от WitcherGeralt 20.08.21 12:05:41 MSK

Ввожу в обиход новое слово «лорить». Лорить — нести околесицу. Тем более многие тут это делают.

anonymous
( 20.08.21 14:20:01 MSK )

Заставь, что называется, некоторых товарищей создавать папку средствами питона …

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Как создать папки по шаблону используя два параметра?

#1 Авг. 8, 2013 00:19:03

klerk87 Зарегистрирован: 2013-08-08 Сообщения: 3 Репутация: 0 Профиль Отправить e-mail

Как создать папки по шаблону используя два параметра?

Доброй ночи!
Начинаю изучать Питон. Пишу программу для автоматического создания папок. Нужно спросить при запуске два параметра (дата и номер) потом по шаблону создать папки используя эти параметры. Использую модуль OS. Получается только создать папку находящуюся в каталоге где лежит скрипт Питона. При попытке создать в этой папке вложенную в неё папку возникает ошибка. А как сделать подстановку моих параметров в имя папки вообще не представляю. Пытался читать хелп на английском, мало помогло…
Что-то русскоязычной литературы по Питону маловато.. С английским плоховато, надо подучить…Есть ли переведенный хелп на русский язык? Использую Питон 3.2.3..

#2 Авг. 8, 2013 02:04:56

py.user.next От: Зарегистрирован: 2010-04-29 Сообщения: 9629 Репутация: 839 Профиль Отправить e-mail

Как создать папки по шаблону используя два параметра?

klerk87
А как сделать подстановку моих параметров в имя папки вообще не представляю.

>>> namefmt = 'name__' >>> >>> a, b = 1, 2 >>> name = namefmt.format(a, b) >>> print(name) name_1_2 >>> 

klerk87
При попытке создать в этой папке вложенную в неё папку возникает ошибка.

приведи код

#3 Авг. 8, 2013 02:09:00

4kpt От: Харьков Зарегистрирован: 2010-11-03 Сообщения: 998 Репутация: 63 Профиль Отправить e-mail

Как создать папки по шаблону используя два параметра?

Есть два метода:

mkdir Создается только одна папка. Рекурсивное создание невозможно.

os.mkdir("Имя_будущей_папки") 

makedirs Создается рекурсивно (если в пути папки отсутсвуют — то они будут созданы).

os.makedirs("Путь_с_именем_будущей_папки") 

Кроме того необходимо помнить, что многие комманды пляшут от рабочей паки.
Чтобы сменить рабочую папку надо

os.chdir("Путь_к_новой_рабочей_папке") 

А рабочую папку можно узнать

os.getcwd() 

Приведу пример кода функции для создания папки по указанному пути с указанной датой

def create_folder(path, date): os.chdir(path) os.mkdir(str(data)) 

P.S. Не забывайте, что для указания пути необходимо использовать два обратных слеша или сырые строки, т.е. путь “c:\Program\data” будет выглядеть

"c:\\Program\\data" 
r"c:\Program\data" 

Отредактировано 4kpt (Авг. 8, 2013 02:16:04)

python модуль os

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

  • mkdir() — для создания новой папки
  • rmdir() — Для удаления папки
  • rename() — Для переименования
  • remove() — для удаления файла

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

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

 
import os os.mkdir("test") os.mkdir("c://catalog") os.mkdir("c://catalog/test")

Вот так всего в четыре строчки создается новая папка. Что мы сделали?

  1. Импортировали модуль os
  2. Передали функции mkdir() название нашей папки
  3. Передали каталог в которой надо создать папку

Теперь рассмотрим пример с удалением папки, тут практически все тоже самое.

 
import os os.rmdir("hello") os.rmdir("c://somedir/hello")
  1. Передаем mkdir() название папки
  2. Передаем путь к этой папке

Переименовываем файл

Для переименования, мы используем функцию rename , в которую нам необходимо передать два параметра. Первым параметром передаем путь, а вторым параметром передаем новое название. Все довольно логично и просто.

 
import os os.rename("C://SomeDir/test.txt", "C://SomeDir/python.txt")

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

Удаление файла, так же не вызовет у вас трудностей, все достаточно просто делается. Используем функцию remove() , и передаем ему путь файла для удаления.

 
import os os.remove("C://catalog/python.txt")

Проверка существования файла

Я думаю вы хорошо помните исключения и обработку исключения в python. Так вот, если мы попытаемся открыть несуществующий файл, то Python вызовет ошибку FileNotFoundError . Для отлова данного исключения, мы всегда можем использовать блок try…excpet , но куда проще проверить существует ли файл, до его открытия. Для этого нам достаточно воспользоваться функцией os.path.exists() .

 
filename = input("Введите путь к файлу: ") if os.path.exists(filename): print("Указанный файл существует") else: print("Файл не существует")

Работа с модулем pathlib в Python 3

Порой разработчику приходится отойти от мира программной абстракции и обратиться к практическим вещам. Например, к файловой системе. Манипуляции путями файловых систем в Python 3 реализуется несколькими библиотеками. Одна из них — pathlib. И в этой статье мы хотели бы вам рассказать о том, как использовать модуль pathlib и решать практические задачи с помощью него.

Файловая система

Прежде, чем перейти непосредственно к практической части применения библиотеки pathlib, необходимо повторить матчасть и обсудить основную концепцию файловой системы и её терминологию.

Итак, у нас есть файл example.exe расположенный в C:\Program Files (файловая система Windows). У этого файла есть 4 основные характеристики с точки зрения файловой системы:

  • Путь — это идентификатор файла, определяющий его местонахождение в файловой системе, исходя из последовательности названий каталогов. Их разделяют на два типа:
    • Абсолютный путь — полный путь файла, начинающийся с корневого каталога. Например, C:\Program Files\example.exe
    • Относительный путь — путь к файлу относительно другого каталога. Например, Program Files\example.exe

    Экземпляры Path

    Импортируем модуль pathlib для манипуляции путями файловых систем :

    from pathlib import *

    Классы этого модуля можно разбить на два типа: Pure (или «чистые») и Concrete (или «конкретные»). Первые нужны для абстрактной вычислительной работы с путями, при которой не осуществляется непосредственное взаимодействие с файловой системой ОС. Вторые же необходимы для взаимодействия с ней (создания и удаление директорий, чтения файлов и т.д.).

    Если вы не уверены, какой класс подходит для выполнения вашей задачи, то, скорее всего, класс Path будет в самый раз. Он позволяет взаимодействовать с файловой системой ОС, под которую сам подстраивается (UNIX или Windows), но и при этом ваша манипуляция путями не страдает от ограничений. В рамках этой статьи мы рассмотрим все классы и их применение, но сосредоточимся конкретно на Path.

    Итак, начнем с малого. Создадим переменную с типом данных Path:

    >>> PathExample = Path('Timeweb', 'Cloud', 'Pathlib')
    >>> PathExample
    WindowsPath('Timeweb/Cloud/Pathlib')

    Как видим, модуль сам подстроился под операционную систему — в нашем случае Windows 10. Конструктор Path(args) создает новый экземпляр класса Path и на вход принимает его компоненты (директории, файлы, другие пути).

    Путь PathExample — относительный. Чтобы он стал абсолютным необходимо добавить корневой каталог.

    С помощью методов Path.home() и Path.cwd() мы можем получить каталог текущего пользователя и текущую рабочую папку:

    >>> Path.home()
    WindowsPath('C:/Users/Blog)
    >>> Path.cwd()
    WindowsPath('C:/Users/Blog/AppData/Local/Programs/Python/Python310')

    Сделаем PathExample абсолютным и рассмотрим другие аспекты работы с pathlib:

    >>> PathExample = Path.home() / PathExample
    >>> PathExample
    WindowsPath('C:/Users/Blog/Timeweb/Cloud/Pathlib')

    С помощью оператора «/» мы можем создавать новые пути.

    Атрибуты Path

    Pathlib предоставляет различные методы и свойства для получения разнообразной информации о путях. Для наглядности добавим введем новую переменную AttributeExample и добавим в неё файл:

    >>>AttributeExample = PathExample / 'file.txt'
    >>> AttributeExample
    WindowsPath('C:/Users/Blog/Timeweb/Cloud/Pathlib/file.txt')

    Диск

    Чтобы узнать букву или имя диска, необходимо использовать свойство.drive:

    >>> AttributeExample.drive 
    'C:'

    Родительские каталоги

    Мы можем получить родительские каталоги с помощью двух свойств: parent и parents[n].

    Parent возвращает родительский каталог:

    >>> AttributeExample.parent
    WindowsPath('C:/Users/Blog/Timeweb/Cloud/Pathlib')

    Чтобы получить более «высокие» родительские каталоги, можно использовать parent несколько раз:

    >>> AttributeExample.parent.parent 
    WindowsPath('C:/Users/Blog/Timeweb/Cloud')

    Или воспользоваться свойством parents[n], который возвращает n-го предка:

    >>> AttributeExample.parents[3]
    WindowsPath('C:/Users/Blog)

    Имя

    Для получения имени файла нужно использовать свойство .name:

    >>> AttributeExample.name 
    'file.txt'

    Расширение

    Для того, чтобы получить расширение файла, необходимо использовать свойство .suffix или .suffixes (при наличии двойного расширения, например .tar.gz):

    >>> AttributeExample.suffix 
    '.txt'
    >>> Path('file.tar.gz').suffixes 
    ['.tar', '.gz']

    Абсолютный или относительный путь

    Мы можем определить, является ли путь абсолютным, с помощью метода .is_absolute():

    >>> AttributeExample.is_absolute()
    True

    Составные части

    Мы можем разложить путь на компоненты с помощью свойства .parts:

    >>> AttributeExample.parts 
    ('C:\\', 'Users', ‘Blog’, 'Timeweb', 'Cloud', 'Pathlib', 'file.txt')

    Сравнение путей

    Мы можем сравнивать пути как с помощью операторов сравнения, так и с помощью различных методов.

    Операторы сравнения

    Мы можем узнать, являются ли пути одинаковыми:

    >>>Path('timeweb') == Path('TIMEWEB') 
    True

    Стоит упомянуть, что такое же сравнение для UNIX-систем будет давать результат False:

    >>> PurePosixPath('timeweb') == PurePosixPath('TIMEWEB') 
    False

    Это связано с тем, что в Windows регистр не имеет значения в имени директории, в отличие от файловой системы UNIX-систем.

    Методы сравнения

    Мы можем узнать, является ли один путь частью другого, с помощью метода .is_relative_to():

    >>> CompareExample = AttributeExample
    >>> CompareExample.is_relative_to('C:')
    True
    >>> CompareExample.is_relative_to('D:/') 
    False

    Также можно использовать шаблоны для проверки с помощью метода .match():

    >>> CompareExample.match('*.txt') 
    True

    Создание и удаление папок и файлов

    Для создания папок с помощью модуля pathlib необходимо использовать метод .mkdir(parents = True/False, exist_ok =True/False). Метод получает на вход (помимо пути, по которому нужно создать папку) 2 логические переменные: parents и exist_ok.

    Если значение parents = True, то метод создаст родительские каталоги (при их отсутствии). Если False, то вернет ошибку при их отсутствии.

    Exist_ok отвечает за обработку ошибок, возникающих при существовании целевой папки.

    Создадим папку CreateExample, но сначала проверим, есть ли уже такая директория с помощью метода .is_dir():

    >>> CreateExample = CompareExample
    >>> CreateExample.is_dir()
    False

    Теперь попробуем его создать:

    >>> CreateExample.mkdir(parents = True, exist_ok = True) 
    >>> CreateExample.is_dir()
    True

    Проверим папку в проводнике:

    Как видим, появилась именно папка, а не файл. Чтобы создать пустой файл, необходимо использовать метод .touch(). Но сначала удалим папку file.txt с помощью метода .rmdir():

    >>> CreateExample.rmdir() 
    >>> CreateExample.touch()
    >>> CreateExample.is_file()
    True

    Для удаления файлов существует метод .unlink().

    Поиск файлов

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

    >>> SearchingExample = CreateExample

    >>> Hosting = Path(SearchingExample.parents[2],'hosting/host.txt')
    >>> Hosting.parent.mkdir(parents=True, exist_ok = True)
    >>> Hosting.touch()

    >>> Docker = Path(SearchingExample.parents[1],'Docker/desk.txt')
    >>> Docker.parent.mkdir(parents=True, exist_ok = True)
    >>> Docker.touch()

    Мы создали и получили такую структуру (начиная с C:\Users\Blog\Timeweb):

    Cloud
    |— Pathlib
    | `— file.txt
    `— Docker
    `— desk.txt
    Hosting
    `— host.txt

    Использование модуля pathlib для поиска файлов подразумевает применение цикла for и метода .glob():

    >>> for file_cloud in SearchingExample.parents[2].glob('*.txt'): 
    print(file_cloud)

    Этот код не смог ничего найти, так как он не рассматривал вложенные папки. Чтобы он корректно работал, необходимо его немного изменить:

    >>> for file_cloud in SearchingExample.parents[2].glob('**/*.txt'): 
    print(file_cloud)
    .
    .
    C:\Users\Blog\Timeweb\Cloud\Docker\desk.txt
    C:\Users\Blog\Timeweb\Cloud\Pathlib\file.txt
    C:\Users\Blog\Timeweb\hosting\host.txt

    Чтение и запись в файл

    Обе операции можно выполнять как в текстовом, так и в бинарном режиме. Мы сосредоточимся на первом варианте. Для работы с содержимым файла pathlib предоставляет 4 метода:

    • Чтение: .read_text() и .read_bytes();
    • Запись: .write_text() и .write_bytes();

    Запишем какую-нибудь важную информацию в файл, которую просто необходимо запомнить. Например, « Timeweb Cloud предлагает очень крутые облачные серверы !». Действительно, такое лучше где-нибудь записать:

    >>> WRExample = SearchingExample 

    >>> WRExample.is_file()
    True
    >>> WRExample.write_text('Timeweb Cloud предлагает очень крутые облачные серверы!')
    55 #Длина сообщения
    >>> WRExample.read_text()
    'Timeweb Cloud предлагает очень крутые облачные серверы!'

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *