Как создать программу которая создает папки

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

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

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

Модуль встроенный, поэтому для работы с ним не нужно ничего устанавливать.

Вывод текущей директории

Для получения текущего рабочего каталога используется os.getcwd() :

Создание программы которая создает новые папки


import os # вывести текущую директорию print(«Текущая деректория:», os.getcwd())

os.getcwd() возвращает строку в Юникоде, представляющую текущий рабочий каталог. Вот пример вывода:

Текущая деректория: C:python3bin

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

Для создания папки/каталога в любой операционной системе нужна следующая команда:

# создать пустой каталог (папку) os.mkdir(«folder»)

После ее выполнения в текущем рабочем каталоге тут же появится новая папка с названием «folder».

Если запустить ее еще раз, будет вызвана ошибка FileExistsError , потому что такая папка уже есть. Для решения проблемы нужно запускать команду только в том случае, если каталога с таким же именем нет. Этого можно добиться следующим образом:

# повторный запуск mkdir с тем же именем вызывает FileExistsError, # вместо этого запустите: if not os.path.isdir(«folder»): os.mkdir(«folder»)

Функция os.path.isdir() вернет True , если переданное имя ссылается на существующий каталог.

Изменение директории

Менять директории довольно просто. Проделаем это с только что созданным:

# изменение текущего каталога на ‘folder’ os.chdir(«folder»)

Еще раз выведем рабочий каталог:

# вывод текущей папки print(«Текущая директория изменилась на folder:», os.getcwd())
Текущая директория изменилась на folder: C:python3binfolder

Создание вложенных папок

Предположим, вы хотите создать не только одну папку, но и несколько вложенных:

# вернуться в предыдущую директорию os.chdir(«..») # сделать несколько вложенных папок os.makedirs(«nested1/nested2/nested3»)

Читайте также:
Программа по смене ВПН на ПК

Это создаст три папки рекурсивно, как показано на следующем изображении:

Создание вложенных папок

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

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

ЛАЙФХАК: Как создать ДЕЙСТВИТЕЛЬНО невидимую папку #Shorts


# создать новый текстовый файл text_file = open(«text.txt», «w») # запить текста в этот файл text_file.write(«Это текстовый файл»)

w значит write (запись), a — это appending (добавление данных к уже существующему файлу), а r — reading (чтение). Больше о режимах открытия можно почитать здесь.

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

С помощью модуля os достаточно просто переименовать файл. Поменяем название созданного в прошлом шаге.

# переименовать text.txt на renamed-text.txt os.rename(«text.txt», «renamed-text.txt»)

Функция os.rename() принимает 2 аргумента: имя файла или папки, которые нужно переименовать и новое имя.

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

Функцию os.replace() можно использовать для перемещения файлов или каталогов:

# заменить (переместить) этот файл в другой каталог os.replace(«renamed-text.txt», «folder/renamed-text.txt»)

Стоит обратить внимание, что это перезапишет путь, поэтому если в папке folder уже есть файл с таким же именем ( renamed-text.txt ), он будет перезаписан.

Список файлов и директорий

# распечатать все файлы и папки в текущем каталоге print(«Все папки и файлы:», os.listdir())

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

Все папки и файлы: [‘folder’, ‘handling-files’, ‘nested1’, ‘text.txt’]

А что если нужно узнать состав и этих папок тоже? Для этого нужно использовать функцию os.walk() :

# распечатать все файлы и папки рекурсивно for dirpath, dirnames, filenames in os.walk(«.»): # перебрать каталоги for dirname in dirnames: print(«Каталог:», os.path.join(dirpath, dirname)) # перебрать файлы for filename in filenames: print(«Файл:», os.path.join(dirpath, filename))

os.walk() — это генератор дерева каталогов. Он будет перебирать все переданные составляющие. Здесь в качестве аргумента передано значение «.», которое обозначает верхушку дерева:

Каталог: .folder Каталог: .handling-files Каталог: .nested1 Файл: .text.txt Файл: .handling-fileslisting_files.py Файл: .handling-filesREADME.md Каталог: .nested1nested2 Каталог: .nested1nested2nested3

Метод os.path.join() был использован для объединения текущего пути с именем файла/папки.

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

Удалим созданный файл:

# удалить этот файл os.remove(«folder/renamed-text.txt»)

os.remove() удалит файл с указанным именем (не каталог).

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

С помощью функции os.rmdir() можно удалить указанную папку:

# удалить папку os.rmdir(«folder»)

Для удаления каталогов рекурсивно необходимо использовать os.removedirs() :

# удалить вложенные папки os.removedirs(«nested1/nested2/nested3»)

Это удалит только пустые каталоги.

Получение информации о файлах

Для получения информации о файле в ОС используется функция os.stat() , которая выполняет системный вызов stat() по выбранному пути:

Читайте также:
Как разрешить программе вносить изменения

open(«text.txt», «w»).write(«Это текстовый файл») # вывести некоторые данные о файле print(os.stat(«text.txt»))
os.stat_result(st_mode=33206, st_ino=14355223812608232, st_dev=1558443184, st_nlink=1, st_uid=0, st_gid=0, st_size=19, st_atime=1575967618, st_mtime=1575967618, st_ctime=1575966941)

Это вернет кортеж с отдельными метриками. В их числе есть следующие:

  • st_size — размер файла в байтах
  • st_atime — время последнего доступа в секундах (временная метка)
  • st_mtime — время последнего изменения
  • st_ctime — в Windows это время создания файла, а в Linux — последнего изменения метаданных

Для получения конкретного атрибута нужно писать следующим образом:

# например, получить размер файла print(«Размер файла:», os.stat(«text.txt»).st_size)
Размер файла: 19

На этой странице больше об атрибутах.

Выводы

Работать с файлами и каталогами в Python очень просто. Не имеет значения даже используемая операционная система, хотя отдельные уникальные для системы функции можно использовать: например, os.chown() или os.chmod() в Linux. Более подробно эта тема освещена в официальной документации Python.

Источник: pythonru.com

Krol64enok

Автоматическое создание папок понадобилось мне при выполнении рабочего поручения. Сначала я предвкушала нудный рабочий день. Только представьте себе, создать сотен пять папок и переименовать их! Не особо надеясь на успех, я все же обратилась к Google и, неожиданно для себя, на первой же позиции в выдаче нашла двигатель прогресса С помощью примитивной программки задание упростилось в разы. «Все гениальное — просто», — подумала я, когда нашла в сети FolderMassCreator.

Итак, если вам понадобилось создать очень много папок с определенным названием:

1. Скачайте FolderMassCreator (29 кб). Это не установочный файл, а уже сама программа.

2. Создайте в любом документе список имен будущих папок в столбик. Это самый трудоемкий пункт. Не забудьте, что если нужны однотипные числовые названия папок, можно, например, ввести в Excel несколько первых чисел и протянуть колонку.

3. Запустите FolderMassCreator и введите путь, куда программа поместит созданные папки.

4. Заполните окошко «Имена» и нажмите создать.

18 ответов к “Программа для создания папок”

  1. Вадим сказал:
    15 декабря 2012 в 06:12 Спасибо ! Нужная програмка при создании библиотек.
  2. Nick сказал:
    15 января 2015 в 04:01 Большое спасибо! Супер программа. Незаменимый помощник, когда надо создавать кучи папок с конкретными именами.
  3. Юлия сказал:
    17 ноября 2015 в 09:11 Супер-программа! Спасибище!
  4. Серж сказал:
    3 декабря 2015 в 12:12 Супер просто =)
  5. Владислав сказал:
    1 февраля 2016 в 07:02 Огромное Вам спасибо!
  6. shuba сказал:
    22 февраля 2016 в 08:02 вы просто спасли. спасибо вам
  7. Андрей сказал:
    7 июля 2016 в 02:07 Отлично работает)) спасибо
  8. npuxog сказал:
    16 марта 2017 в 04:03 программа превзошла все мои ожидание когда я увидел как создаются папки и ПОДПАПКИ. Очень полезная штука!
  9. Сергей сказал:
    22 июля 2017 в 04:07 ОГРОМНОЕ ВАМ СПАСИБО ЭТО ПРОСТО ЧУДО.
  10. Олег сказал:
    15 сентября 2017 в 12:09 Супер, все работает! Причем можно в Excel выгрузить список имен папок и просто скопировать и вставить в эту программу, даже в виде таблицы.
Читайте также:
Ошибка в программе на языке программиста 3 буквы сканворд

Источник: krol64enok.com

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

edward_freedom

В c++ 17 версии имеется библиотека filesystem, позволяющаяя производить некоторые манипуляции с файловой системой компьютера. Что касательно вашего вопроса там есть такая функция как bool create_directory(. ). Данная функция принимает в качестве аргумента путь конец которого — имя папки для создания.

В Windows рабочий стол находится по пути:
/users//desktop/

В Unix-like (BSD, Linux и т.д.) по пути:
/home//desktop/

И того нам нужно получить имя юзера:
В Windows это как-то так:

#include #include char username[UNLEN+1]; //

Итого, код для Windows будет выглядеть как-то так:

#include #include #include #include namespace fs = std::filesystem; // Для краткости bool createDesktopDir(std::string dir_name) < char username[UNLEN+1]; DWORD username_len = UNLEN+1; GetUserName(username, return fs::create_directory(std::string(«/users/») + username + «/desktop/» + dir_name) >

Для Unix-like ОС получения юзера выглядит так:

#include char username[1024] = ; getlogin_r(username, sizeof(username)-1);

А следовательно код для создания директории будет такой:

#include #include #include namespace fs = std::filesystem; bool createDesktopDir(std::string dir_name) < char username[1024] = ; getlogin_r(username, sizeof(username)-1); return fs::create_directory(std::string(«/home/») + username + «/desktop/» + dir_name) >

Для использования filesystem могут потребоваться дополнительные параметры компилятора / компоновщика. Реализация GNU до 9.1 (то есть GCC) требует связывания с -lstdc++fs, а реализация LLVM до LLVM 9.0 (то есть clang) требует связывания с -lc++fs.

С Unix могут быть проблемы если вы запустили программу от root поскольку его домашняя директория находится по адресу /root/, а следовательно и рабочий стол тут /root/desktop/. Так же могут быть проблемы когда директории в Linux имеют русские имена например /home//Рабочий стол, надо как-то обработать этот момент, благо GCC и clang хотябы умеют в Unicode. В Windows же могут быть проблемы с компиляторами MinGW если имя пользователя на русском (или другом языкие содержащим Unicode-символы) ибо использовать в путях на текущий момент они могут только в ASCII-символы, то есть только латиница. Тут либо кушать кактус и кидать из кодировки в кодировку, либо юзать visual c++. В общем удачи

Источник: qna.habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru