Работа с файлами в Python с помощью модуля OS
Обработка файлов в Python с помощью модуля os включает создание, переименование, перемещение, удаление файлов и папок, а также получение списка всех файлов и каталогов и многое другое.
В индустрии программного обеспечения большинство программ тем или иным образом обрабатывают файлы: создают их, переименовывают, перемещают и так далее. Любой программист должен обладать таким навыком. С этим руководством вы научитесь использовать модуль os в Python для проведения операций над файлами и каталогами вне зависимости от используемой операционной системы.
Важно знать, что модуль os используется не только для работы с файлами. Он включает массу методов и инструментов для других операций: обработки переменных среды, управления системными процессами, а также аргументы командной строки и даже расширенные атрибуты файлов, которые есть только в Linux.
Модуль встроенный, поэтому для работы с ним не нужно ничего устанавливать.
Вывод текущей директории
Для получения текущего рабочего каталога используется os.getcwd() :
import os # вывести текущую директорию print("Текущая деректория:", os.getcwd())
os.getcwd() возвращает строку в Юникоде, представляющую текущий рабочий каталог. Вот пример вывода:
Текущая деректория: C:\python3\bin
Создание папки
Для создания папки/каталога в любой операционной системе нужна следующая команда:
# создать пустой каталог (папку) 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:\python3\bin\folder
Создание вложенных папок
Предположим, вы хотите создать не только одну папку, но и несколько вложенных:
# вернуться в предыдущую директорию os.chdir("..") # сделать несколько вложенных папок os.makedirs("nested1/nested2/nested3")
Это создаст три папки рекурсивно, как показано на следующем изображении:
Создание файлов
Для создания файлов в Python модули не нужны. Можно использовать встроенную функцию open() . Она принимает название файла, который необходимо создать в качестве первого параметра и желаемый режим открытия — как второй:
# создать новый текстовый файл 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-files\listing_files.py Файл: .\handling-files\README.md Каталог: .\nested1\nested2 Каталог: .\nested1\nested2\nested3
Метод 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.
Какой в Python 3.6 есть аналог команде «cd» для смены рабочей директории из интерпретатора?

Но ни один из способов не сработал в интерпретаторе: Как мне правильно сменить директорию из интерпретатора?
Отслеживать
19.9k 5 5 золотых знаков 44 44 серебряных знака 61 61 бронзовый знак
задан 13 июл 2017 в 12:55
1 1 1 золотой знак 1 1 серебряный знак 1 1 бронзовый знакcd не является командой интерпретатора python . Сменить текущую директорию можно до входа в интерпретатор.
13 июл 2017 в 12:59
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Изменить рабочую директорию можно, например, так:
import os os.chdir(path)Update:
В случае с Windows есть два важных нюанса:
- Путь необходимо обрамлять кавычками
- Обратные слэши в пути к целевой папке необходимо дублировать
Т.е. конкретный пример для вашего случая становится таким:
import os os.chdir("C:\\Users\\Roma\\rabota")p.s. за уточнение спасибо пользователю @tanatonaut
Отслеживать
2,489 2 2 золотых знака 12 12 серебряных знаков 22 22 бронзовых знака
ответ дан 13 июл 2017 в 13:01
19.9k 5 5 золотых знаков 44 44 серебряных знака 61 61 бронзовый знакОт себя добавлю, что в винде этот (path) надо обрамлять в кавычки («path») , а также есть очень важный нюанс. Обратные слэши в пути к папке надо дублировать. То есть os.chdir(«C:\\papka\\papka1»)
13 июл 2017 в 13:14
@tanatonaut, спасибо, я обновил ответ и добавил в него ваше замечание
13 июл 2017 в 13:18То что строку (путь к файлу) нужно заключать в кавычки — это не специфика Windows, это синтаксис Python. Если путь хранится в переменной, то имя переменной (очевидно) в кавычки заключать не нужно. Чтобы обратные слеши не экранировать, можно поставить r перед строкой: r’C:\Users\Roma\rabota’
13 июл 2017 в 15:51
os.chdir(path)Отслеживать
ответ дан 13 июл 2017 в 13:01
2,489 2 2 золотых знака 12 12 серебряных знаков 22 22 бронзовых знакаДобавьте Python в системную переменную, делается это так:
ПКМ по Мой компьютер > Свойства > Дополнительные параметры системы > Переменные среды > Выбираете переменную Path > Изменить > Вставляете туда путь к Python .
Теперь откройте терминал и перейдите в нужную директорию, к примеру cd C://Users/User/Desktop и после этого напишите в терминал python . Теперь Вы в этой директории.
Как поменять каталог в python

Операции с каталогами в Python: работа с каталогами и директориями
14 июля 2023
Оценки статьи
Еще никто не оценил статьюВ этом руководстве мы рассмотрим операции с каталогами в Python. Мы узнаем, как получить список каталогов, получить текущий каталог, изменить каталог, создать каталог, переименовать каталог и удалить каталог. Работа с каталогами важна при работе с файлами и организации структуры файловой системы.
Примеры операций
1. Получение списка каталогов – os.listdir()
Мы можем получить список каталогов в определенном месте с помощью функции os.listdir() . Если указать путь к местоположению, функция вернет список строк, содержащих имена каталогов в данном месте. Пример:
import os location = '/usr' directories = os.listdir(location) print(directories)['bin', 'lib', 'local', 'sbin', 'share', 'src']2. Получение текущего каталога – os.getcwd()
Мы можем узнать текущий каталог, в котором находится исполняемый файл, с помощью функции os.getcwd() . Пример:
import os current_directory = os.getcwd() print(current_directory)/home/user/documents3. Изменение каталога – os.chdir()
Мы можем изменить текущий каталог с помощью функции os.chdir() . Пример:
import os new_directory = '/home/user/downloads' os.chdir(new_directory)4. Создание каталога – os.mkdir()
Мы можем создать новый каталог с помощью функции os.mkdir() . Пример:
import os new_directory = '/home/user/documents/new_directory' os.mkdir(new_directory)5. Переименование каталога – os.rename()
Мы можем переименовать каталог с помощью функции os.rename() . Пример:
import os old_name = '/home/user/documents/old_directory' new_name = '/home/user/documents/new_directory' os.rename(old_name, new_name)6. Удаление каталога – os.rmdir()
Мы можем удалить пустой каталог с помощью функции os.rmdir() . Пример:
import os directory_to_delete = '/home/user/documents/directory_to_delete' os.rmdir(directory_to_delete)Примечание: os.rmdir() может удалить только пустой каталог. Для удаления непустых каталогов можно использовать модуль shutil .
Зачем нам нужно работать с каталогами?
Работа с каталогами важна при организации файловой системы и обработке файлов в Python. Мы можем создавать, переименовывать, удалять и изменять каталоги, чтобы управлять файлами и директориями в проектах. Каталоги могут быть динамическими, поэтому работа с ними позволяет нам адаптироваться к различным условиям и требованиям при работе с файлами.
Вывод
В этом руководстве мы изучили операции с каталогами в Python. Мы рассмотрели различные операции, такие как получение списка каталогов, получение текущего каталога, изменение каталога, создание каталога, переименование каталога и удаление каталога. Работа с каталогами является важной частью организации файлов и обработки файловых операций в Python.
Меню категорий
-
Загрузка категорий.
Добро пожаловать в Блог Разработчика Владислава Александровича.
Ведется медленная, но уверенная разработка функционала сайта.
Django Core: 0.3.4 / Next.js 1.0 / UPD: 05.06.2023
Управление каталогами и файлами в Python
В этой статье вы узнаете все, об управлении каталогами и файлами. А именно:
- Создание каталога
- Переименование каталога
- Перечисление всех каталогов и работа с ними
Текущий каталог Python
Получение текущего каталога, то есть каталог в котором, на данный момент находится ваш скрипт, осуществляется с помощью функции getcwd() . Данная функция вернет нам текущий каталог в виде строки.
import os print(os.getcwd()) Результат: 'C:\\Python\test'
Изменение каталога
С помощью метода chdir() , мы сможем изменить текущий рабочий каталог. Новый путь на который мы хотим изменить положение каталога, необходимо передать в качестве строки, нашей функции. Рассмотрим пример:
import os os.chdir('C:\\Pythontest') print(os.getcwd()) Результат: 'C:\\Pythontest'Список файлов в каталоге Python
Используя метод listdir() мы извлечем все файлы и подкаталоги внутри корневого каталога. Данный метод принимает путь в качестве строки, и возвращает список подкаталогов и файлов. В случае, если не указан путь, он вернет список из текущего каталога.
import os print(os.getcwd()) Результат: C:\\Python\test os.listdir() Результат: ['files','sql','sqllite','Readme.txt','pydo.py','pars.py','info.txt','Lib','libs','Tools',]
Создание нового каталога Python
Новый каталог создается так же просто, как и все остальные операции, для этого достаточно воспользоваться функцией mkdir() . Данный метод в качестве аргумента принимает путь к новому каталогу. Если же путь не указан, то новый каталог будет создан в текущей директории.
os.mkdir('Python20') os.listdir() ['Python20']Переименование каталога в Python
Метод rename() , поможет вам переименовать будь то каталог, или файл. Данный метод принимает два аргумента. Первый аргумент, это старое название, а второй это соответственно новое название.
os.listdir() ['Python20'] os.rename('Python20', 'NewPython20') os.listdir() ['NewPython20']Удаление файла в Python
С помощью метода remove() , мы можем удалить файлы, или используем метод rmdir() , для удаление пустого каталога.
os.listdir() ['NewPython20', 'test.txt'] os.remove('test.txt') os.listdir() ['NewPython20'] os.rmdir('NewPython20') os.listdir() []Возникает момент, когда нам надо удалить непустой каталог, для этого мы можем воспользоваться rmtree() функцией, которая поставляется в модуле shutil() .
import shutil shutil.rmtree("NewPython20") os.listdir() []
