Модуль Python os — примеры создания и работы с папками и путями
Модуль Python OS используется для работы с операционной системой и является достаточно большим, что бы более конкретно описать его применение. С помощью его мы можем получать переменные окружения PATH, названия операционных систем, менять права на файлах и многое другое. В этой статье речь пойдет про работу с папками и путями, их создание, получение списка файлов и проверка на существование. Примеры приведены с Python 3, но и с предыдущими версиями ошибок быть не должно.
Модуль OS не нуждается в дополнительной установке, так как поставляется вместе с инсталлятором Python.
Навигация по посту
- Получение директорий и списка файлов
- Получение файлов через listdir
- Получение полного абсолютного пути к файлам
- Исключение каталогов или файлов из списка
- Получение расширения файлов
- Проверка директорий и файлов на существование
Получение директорий и списка файлов
Есть несколько способов вернуть список каталогов и файлов по указанному пути. Первый способ используя os.walk, который возвращает генератор:
import os path = 'C:/windows/system32/drivers/' print(path)
Такие объекты можно итерировать для понятного отображения структуры:
import os path = 'C:/Folder1' for el in os.walk(path): print(el)
Сам кортеж делится на 3 объекта: текущая директория, имя вложенных папок (если есть), список файлов. Я так же разделил их на примере ниже:
import os path = 'C:/Folder1' for dirs,folder,files in os.walk(path): print('Выбранный каталог: ', dirs) print('Вложенные папки: ', folder) print('Файлы в папке: ', files) print('\n')
Os.walk является рекурсивным методом. Это значит, что для поиска файлов в конкретной директории вы будете итерировать и все вложенные папки. Обойти это с помощью самого метода нельзя, но вы можете использовать break так как os.walk возвращает указанную директорию первой. Можно так же использовать next():
import os path = 'C:/Folder1' for dirs,folder,files in os.walk(path): print('Выбранный каталог: ', dirs) print('Вложенные папки: ', folder) print('Файлы в папке: ', files) print('\n') # Отобразит только корневую папку и остановит цикл break # Отобразит первый итерируемый объект directory = os.walk(path) print(next(directory))
Получение файлов через listdir
Есть еще один метод получения файлов используя listdir. Отличия от предыдущего метода в том, что у нас не будет разделения файлов и папок. Он так же не является рекурсивным:
import os path = 'C:/Folder1' directory = os.listdir(path) print(directory)
Получение полного абсолютного пути к файлам
Для последующего чтения файла нам может понадобится абсолютный путь. Мы можем использовать обычный метод сложения строк или метод os.path.join, который сделает то же самое, но и снизит вероятность ошибки если программа работает на разных ОС:
import os path = 'C:/Folder1' for dirs,folder,files in os.walk(path): print('Выбранный каталог: ', dirs) print('Вложенные папки: ', folder) print('Файлы в папке: ', files) print('Полный путь к файлу: ', os.path.join(dirs, files))
Исключение каталогов или файлов из списка
У нас может быть список полных путей, например из списка выше, из которого мы хотим исключить папки или файлы. Для этого используется os.path.isfile:
import os path = ['C:/Folder1', 'C:/Folder1/Folder2/file2.txt'] for el in path: if os.path.isfile(el): print('Это файл: ', el) else: print('Это папка: ', el)
Такой же принцип имеют следующие методы:
- os.path.isdir() — относится ли путь к папке;
- os.path.islink() — относится ли путь к ссылке;
Получение расширения файлов
Расширение файла можно получить с помощью os.path.splittext(). Этот метод вернет путь до расширения и само расширение. Этот метод исключает ситуацию, когда точка может стоять в самом пути. Если в качестве пути мы выберем каталог (который не имеет расширения) , результатом будет пустая строка:
import os path = ['C:/Folder1', 'C:/Folder1/Folder2/file2.txt'] for el in path: print(os.path.splitext(el))
os.path.basename(path) — вернет имя файла и расширение.
Создание и удаление директорий
Методы по изменению папок следующие:
- os.mkdir() — создаст папку;
- os.rename() — переименует;
- os.rmdir() — удалит.
import os # Имя новой папки path = 'C:/Folder1/NewFolder' # Ее создание os.mkdir(path) # Переименуем папку os.rename(path, 'C:/Folder1/NewFolder2') # Удалим os.rmdir('C:/Folder1/NewFolder2')
Если попытаться создать несколько вложенных папок сразу, используя предыдущий пример, появится ошибка FileNotFoundError. Создание папок включая промежуточные выполняется с os.makedirs():
import os path = 'C:/Folder1/Folder1/Folder1/' os.makedirs(path)Проверка директорий и файлов на существование
Если мы пытаемся создать папку с существующим именем, то получим ошибку FileExistsError. Один из способов этого избежать — использование os.path.exists(), который вернет True в случае существования файла или папки:
import os path = ['C:/Folder1/file1.txt', 'C:/Folder1/NotExistFolder'] for el in path: if os.path.exists(el): print('Такой путь существует: ', el) else: print('Такого пути нет', el)
Получение и изменение текущей директории
Запуская любую программу или консоль, например CMD, мы это делаем из определенной директории. С этой и соседней директорией мы можем работать без указания полного пути. Для того что бы узнать такую директорию в Python используется метод os.getcwd():
import os current_dir = os.getcwd() print(current_dir)
В директории ‘D:\’ сохранен мой файл, с которого я запускаю методы. Вы можете изменить такую директорию с os.chdir() . Такой подход удобен, когда файлы, с которыми вы работаете в основном находятся в другом месте и вы сможете избежать написания полного пути:
import os current_dir = os.getcwd() print(current_dir) new_dir = os.chdir('D:/newfolder/') print(os.getcwd())
Так же как и в любых языках, в любых методах описанных выше, вы можете использовать ‘..’ для работы с директорией выше или ‘/’ для работы со внутренней:
import os # Текущая директория print(os.getcwd()) # Переход во внутреннюю old_dir = os.chdir('/newfolder/') print(os.getcwd()) # Переход на уровень выше new_dir = os.chdir('..') print(os.getcwd())Как создать папку с названием текущей даты?
Как сделать так чтобы в python создавались папки с текущей датой (автоматически), там я буду хранить картинки? Сейчас я это делаю в ручную.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
article = content.find_all("article",{"class":"post"}) path_in_file = 'data2/images/10-11-2022' os.mkdir(path_in_file) count = 1 for item in article: link = item.find("img").attrs.get('src') s = link.split('/') print("-----------------------") image_data = requests.get(link) f_path = f"data2/images/10-11-2022/.jpg" with open(f_path, 'wb') as f: f.write(image_data.content) count+=1
Мне нужно создать папку формата “ЧЧ-ММ-ГГГГ”, где ЧЧ(число) – 10 (или 05 в зависимости если одно число), ММ(месяц) – 11 (или 03 если например март) – 2022 (год).
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Создать папку с названием текущей даты +1 с подпапкой внутри
Здравствуйте! Необходимо создать папку с текущей датой плюс 1 про запуске батника. Т.е. Если.
Создать скрипт,который создаст папку с названием Март,а в ней 31 файл с названием от 1 до 31
Помогите пожалуйста,нужен код к заданию Создать скрипт,который создаст папку с названием March,а в.
Как создать папку с текущей датой и временем?
при нажатии на кнопку должна создоваться папка в каталоге C:\data\ с текущей датой и временем.Регистрация: 28.08.2022
Сообщений: 137Есть такая библиотека DateTime, и с помощью нее можно вытащить строку такого формата (https://docs.python.org/3/library/datetime.html)
В вашем случае подойдет метод .date()
Регистрация: 17.01.2017
Сообщений: 464На php функция time(), возвращает время такого формата “1668082256”. Пыталась сделать так:
1 2 3 4
import datetime dt = datetime.datetime.now() time = dt.time() print(time)
В итоге получаю время.
15:14:09.765502
Как на python получить время такого же формата как на php?
Am I evil? Yes, I am!

16119 / 9755 / 2730
Регистрация: 21.10.2017
Сообщений: 21,6241 2 3
from datetime import datetime print(int(datetime.now().timestamp()))
2421 / 1463 / 633
Регистрация: 01.11.2021
Сообщений: 2,2691 2 3
from datetime import date print(date.today())
Регистрация: 17.01.2017
Сообщений: 464
Я уже решила проблему и получаю миллисекунды, через библиотеку time. Все равно спасибо.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
import datetime import time . req = requests.get(url, headers=headers) src = req.text soup = BeautifulSoup(src,"lxml") content = soup.find("main",class_="site-main") today = datetime.date.today() d1 = today.strftime("%d-%m-%Y") print("d1 =", d1) #dt = datetime.datetime.now() article = content.find_all("article",{"class":"post"}) path_in_file = 'data2/images/'+d1 if not os.path.exists(path_in_file): os.makedirs(path_in_file) count = 1 for item in article: link = item.find("img").attrs.get('src') s = link.split('/') print("-----------------------") millisec = int(time.time() * 1000) print(millisec) image_data = requests.get(link) #"+d1+" f_path = f"data2/images//_.jpg" with open(f_path, 'wb') as f: f.write(image_data.content) count+=1
2421 / 1463 / 633
Регистрация: 01.11.2021
Сообщений: 2,269from datetime import date print(date.today().strftime(("%d-%m-%Y")))
Добавлено через 1 минуту
1 2 3 4
import datetime s = datetime.datetime(2000, 1, 1) print(s.strftime(("%d-%m-%Y")))
01-01-2000
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Как создать новую папку в Visual basic 6.0 , и названием папки указать переменное значение Label?
Здравствуйте, подскажите, пожалуйста! Как создать новую папку с помощью Visual basic 6.0 , и.Создать папку с частичным названием файла
Здравствуйте форумчане. У меня есть большое количество караоке файлов с названием Исполнитель =.
Сохранение листа книги в новый файл с определенным названием в новую папку с таким же названием в определенной папке
Привет всем профи и любителям! Прошу помочь с написанием макроса. Имеется книга с 2 листами.
Создать папку с текущей датой в имени
Здравствуйте, понимаю что спрошу фикню но хелп ми как создать папку с текущей датой в имени если.Создать папку с текущей датой и скопировать в неё файл
Здравствуйте, помогите пожалуйста создать батник, цель которого создать пустую папку с текущей.
Как узнать количество дней между значением текущей даты и даты в поле dateTimePicker?
есть некое значение поля dateTimePicker 1. как работать например с месяцем, в этом значении.Краткое руководство. Открытие и запуск кода Python в папке
Установив поддержку Python в Visual Studio 2019, вы сможете легко перенести существующий код Python в Visual Studio 2019 без необходимости создавать проект Visual Studio.
Установив поддержку Python в Visual Studio 2022, вы сможете легко перенести существующий код Python в Visual Studio 2022 без необходимости создавать проект Visual Studio.
В Visual Studio 2017 и более ранних версиях для выполнения кода Python нужно всегда создавать проект Visual Studio, что можно легко сделать с помощью встроенного шаблона проекта. См. раздел Краткое руководство. Создание проекта Python на основе существующего кода.
- В этом пошаговом руководстве описано, как использовать любую папку с кодом Python. Чтобы в точности повторить все действия из описанного ниже примера, клонируйте репозиторий GitHub gregmalcolm/python_koans на локальный компьютер, выполнив команду git clone https://github.com/gregmalcolm/python_koans в соответствующей папке.
- Запустите Visual Studio 2019 и в начальном окне выберите Открыть в нижней части столбца Приступить к работе. Если вы уже запустили Visual Studio, просто выберите Файл>Открыть>Папка.

- Перейдите к папке с кодом Python и щелкните Выбрать папку. Если вы используете код python_koans, не забудьте выбрать папку python3 в клонированной папке.

- Visual Studio отображает папку в обозревателе решений в виде представления папки. Здесь вы можете разворачивать и сворачивать папки с помощью стрелок в левой части имени папки:

- Когда вы открываете папку Python, Visual Studio создает несколько скрытых папок для управления параметрами, связанными с проектом. Чтобы просмотреть эти папки (и другие скрытые файлы и папки, например .git папку), нажмите кнопку «Показать все файлы» на панели инструментов:

- Чтобы запустить код, определите файл запуска (основной файл программы). В приведенном здесь примере выберите файл запуска contemplate-koans.py, щелкните его правой кнопкой мыши и выберите Задать как элемент запуска.

Важно! Если выбранный элемент запуска не находится в открытой корневой папке, добавьте в JSON-файл конфигурации запуска строку, как описано в разделе о настройке рабочего каталога.
- Запустите код, нажав клавиши CTRL+F5 или выбрав Отладка>Запуск без отладки. Вы также можете нажать на панели инструментов кнопку, на которой изображен символ воспроизведения. Эта кнопка запускает код в отладчике Visual Studio. Во всех случаях Visual Studio обнаружит, что выбранный элемент запуска является файлом Python, и автоматически выполнит код в окружении Python по умолчанию. (Это окружение отображается справа от элемента запуска на панели инструментов.)

- Выходные данные программы отображаются в отдельном командном окне:

- Чтобы выполнить код в другом окружении, выберите нужное окружение из раскрывающегося списка на панели инструментов, а затем снова запустите элемент запуска.
- Чтобы закрыть папку в Visual Studio, выберите в меню команду Файл>Закрыть папку.
- В этом пошаговом руководстве описано, как использовать любую папку с кодом Python. Чтобы в точности повторить все действия из описанного ниже примера, клонируйте репозиторий GitHub gregmalcolm/python_koans на локальный компьютер, выполнив команду git clone https://github.com/gregmalcolm/python_koans в соответствующей папке.
- Запустите Visual Studio 2022 и в начальном окне выберите Открыть в нижней части столбца Приступить к работе. Если вы уже запустили Visual Studio, просто выберите Файл>Открыть>Папка.

- Перейдите к папке с кодом Python и щелкните Выбрать папку.

- Visual Studio отображает папку в обозревателе решений в виде представления папки. Здесь вы можете разворачивать и сворачивать папки с помощью стрелок в левой части имени папки:

- Когда вы открываете папку Python, Visual Studio создает несколько скрытых папок для управления параметрами, связанными с проектом. Чтобы просмотреть эти папки (и другие скрытые файлы и папки, например .git папку), нажмите кнопку «Показать все файлы» на панели инструментов:

- Чтобы запустить код, определите файл запуска (основной файл программы). В нашем примере используется файл запуска contemplate-koans.py. Щелкните этот файл правой кнопкой мыши и выберите пункт Задать как файл запуска.

- Запустите код, нажав клавиши CTRL+F5 или выбрав Отладка>Запуск без отладки. Вы также можете нажать на панели инструментов кнопку, на которой изображен символ воспроизведения. Эта кнопка запускает код в отладчике Visual Studio. Во всех случаях Visual Studio обнаружит, что выбранный элемент запуска является файлом Python, и автоматически выполнит код в окружении Python по умолчанию. (Это окружение отображается справа от элемента запуска на панели инструментов.)

- Выходные данные программы отображаются в отдельном командном окне:

- Чтобы выполнить код в другом окружении, выберите нужное окружение из раскрывающегося списка на панели инструментов, а затем снова запустите элемент запуска.
- Чтобы закрыть папку в Visual Studio, выберите в меню команду Файл>Закрыть папку.
- Щелкните правой кнопкой мыши файл запуска Python (.py) в обозревателе решений и выберите Параметры отладки и запуска.

- В открывшемся диалоговом окне Запуск отладчика выберите вариант По умолчанию и щелкните Выбрать.
Важно! Если выбранный элемент запуска не находится в открытой корневой папке, добавьте в JSON-файл конфигурации запуска строку, как описано в разделе о настройке рабочего каталога.
Настройка рабочего каталога
По умолчанию Visual Studio выполняет проекты Python, открытые в виде папки, в корне этой самой папки. Но код вашего проекта может ожидать, что Python выполняется во вложенной папке. Например, теперь предположим, что вы открываете корневую папку репозитория koans python, а вложенную папку называется python3, где существует _contemplate-koans.py . Вы задаете файл python3/contemplate-koans.py в качестве элемента запуска. Если вы запустите код, появится сообщение об ошибке, что файл koans.txt не найден. Эта ошибка связана с тем, что contemplate-koans.py ожидает выполнение Python в папке python3, а не корневой папке репозитория.
В таком случае следует добавить в JSON-файл конфигурации запуска дополнительную строку, которая указывает рабочий каталог:
Примечание. Если вы не видите здесь вариант По умолчанию, убедитесь, что вы выбрали команду Параметры отладки и запуска именно для файла Python с расширением .py. В Visual Studio тип файла определяет отображаемые варианты действий в отладчике.
< "version": "0.2.1", "defaults": <>, "configurations": [ < "type": "python", "interpreter": "(default)", "interpreterArguments": "", "scriptArguments": "", "env": <>, "nativeDebug": false, "webBrowserUrl": "", "project": "contemplate_koans.py", "projectTarget": "", "name": "contemplate_koans.py", "workingDirectory": "python3" > ] >
По умолчанию Visual Studio выполняет проекты Python, открытые в виде папки, в корне этой самой папки. Но код вашего проекта может ожидать, что Python выполняется во вложенной папке. Например, теперь предположим, что вы открываете корневую папку репозитория koans python, а вложенную папку называется python3, где существует _contemplate-koans.py . Вы задаете файл python3/contemplate-koans.py в качестве элемента запуска. Если вы запустите код, появится сообщение об ошибке, что файл koans.txt не найден. Эта ошибка связана с тем, что contemplate-koans.py ожидает выполнение Python в папке python3, а не корневой папке репозитория.
В таком случае следует добавить в JSON-файл конфигурации запуска дополнительную строку, которая указывает рабочий каталог:
- Щелкните правой кнопкой мыши файл запуска Python (.py) в Обозревателе решений и выберите Добавить конфигурацию отладки.

- В открывшемся диалоговом окне Запуск отладчика выберите вариант По умолчанию и щелкните Выбрать.
Примечание. Если вы не видите здесь вариант По умолчанию, убедитесь, что вы выбрали команду Добавить конфигурацию отладки именно для файла Python с расширением .py. В Visual Studio тип файла определяет отображаемые варианты действий в отладчике.
< "version": "0.2.1", "defaults": <>, "configurations": [ < "type": "python", "interpreter": "(default)", "interpreterArguments": "", "scriptArguments": "", "env": <>, "nativeDebug": false, "webBrowserUrl": "", "project": "contemplate_koans.py", "projectTarget": "", "name": "contemplate_koans.py", "workingDirectory": "python3" > ] >
Как создать папку с помощью python
Итак, в предыдущем уроке мы научились создавать в окне Windows PowerShell новую папку и переходить из папки в папку. Если вы пропустили этот урок или забыли его — повторите.
В этом уроке мы продолжим работу с папками и начнем работать с файлами.
Команда rmdir производит удаление папки или файла.
Команда ls производит просмотр содержимого папки.
Команда new-item создает новый файл.
Итак, открываем Windows PowerShell и вводим уже знакомую команду
PS С:\Users\Boris1985>cd desktop/1/2/3/4
Таким образом переходим в каталог «Рабочий стол» сразу в папку 4.
Теперь вводим команду для создания нового текстового файла:
PS С:\Users\Boris1985\desktop\1\2\3\4> new-item 11.txt –type file
В этой команде есть дополнение –type file – это необходимо для того, чтобы компьютер понял, что тип создаваемого объекта – файл.
Теперь идем на Рабочий стол и проверяем, действительно ли в папке 4 появился один файл – 11.txt.
Давайте создадим еще один файл в этой папке:
PS С:\Users\Boris1985\desktop\1\2\3\4> new-item 12.txt –type file
Далее давайте посмотрим содержимое папки 4. Для этого введем команду ls
PS С:\Users\Boris1985\desktop\1\2\3\4>ls
Вот что нам выдаст оболочка Windows PowerShell:
| Mode | LastWriteTime | Length | Name |
| -a—- | 12.03.2019 14:03 | 0 | 11.txt |
| -a—- | 12.03.2019 14:06 | 0 | 12.txt |
Ну а сейчас давайте удалим файл 11.txt из папки 4.
PS С:\Users\Boris1985\desktop\1\2\3\4> rmdir 11.txt
И сразу же посмотрим содержимое папки 4:
PS С:\Users\Boris1985\desktop\1\2\3\4> ls
И вот что получилось:
| Mode | LastWriteTime | Length | Name |
| -a—- | 12.03.2019 14:06 | 0 | 12.txt |
То есть файла 11.txt в папке 4 уже нет, он удален. Остался один файл 12.txt.
Для полной уверенности можно на рабочем столе посмотреть содержимое папки 4.
Домашнее задание
Создайте на рабочем столе папку 11, в ней две папки и 3 файла. Посмотрите содержимое папки 11, а затем удалите 2 файла из трех.
В следующем уроке мы скачаем Python 2.7 и настроим его работу у себя на компьютере с операционной системой Windows — перейти в урок 4.
- Вы здесь:
- Главная
- Python 2.7 с нуля
- Урок 3. Создание файла, удаление и просмотр содержимого папки
