- Работа с каталогами Python
- Функции каталогов Python
- 1. Создание нового каталога
- 2. Получить текущий рабочий каталог
- 3. Переименовать
- 4. Получить список файлов и каталогов
- 5. Как удалить каталог
- 6. Проверить наличие
- Работа с файлами в Python с помощью модуля OS
- Вывод текущей директории
- Создание папки
- Изменение директории
- Создание вложенных папок
- Создание файлов
- Переименование файлов
- Перемещение файлов
- Список файлов и директорий
- Удаление файлов
- Удаление директорий
- Получение информации о файлах
- Выводы
Работа с каталогами Python
Directory — это в основном структура, которая содержит все соответствующие документы, файлы и папки.
Модуль os содержит несколько функций для управления каталогами в Python.
Функции каталогов Python
os.access (path, mode) Он использует uid для проверки доступа к пути. |
os.chdir (путь) Он изменяет CWD на путь, указанный пользователем. |
os.chflags (путь, флаги) Используется для установки флагов в числовые флаги. |
os.chmod (path, mode) Используется для изменения режима пути на числовой режим. |
os.chown (path, uid, gid) Изменяет идентификатор группы и владельца пути на числовые uid и gid. |
os.chroot (путь) Он используется для изменения корневого каталога текущего выполняемого процесса на путь, указанный пользователем. |
os.fchdir (fd) Используется для изменения CWD на каталог, представленный в файловом дескрипторе fd. |
os.getcwd() Возвращает текущий рабочий каталог (CWD). |
os.getcwdu() Он возвращает объект Unicode в качестве вывода, представленный CWD. |
os.lchmod (path, mode) Используется для изменения режима пути на числовой. |
os.listdir (путь) Возвращает список, содержащий имена записей в каталоге, заданном путем. |
os.lstat (путь) |
os.makedirs (path [, mode]) Используется для рекурсивного создания каталогов. |
os.mkdir() Он используется для создания нового каталога с указанным путем. |
os.mkfifo (путь [, режим]) |
os.readlink (путь) |
os.removedirs (путь) Используется для рекурсивного удаления соответствующих каталогов. |
os.rename (src, dst) Используется для переименования каталога src в dst. |
os.renames (old, new) Используется для рекурсивного переименования старых каталогов в новый. |
os.rmdir (путь) Используется для удаления каталога, указанного пользователем. |
os.stat (путь) |
1. Создание нового каталога
Модуль Python os предоставляет функцию mkdir() для создания нового каталога.
import os os.mkdir('C:/python1') #create a direcotry abc in C:
2. Получить текущий рабочий каталог
Функция getcwd() используется для получения местоположения CWD.
3. Переименовать
Функция rename() используется для переименования CWD.
4. Получить список файлов и каталогов
Функция listdir() используется для получения списка всех каталогов и файлов, имеющихся в текущем каталоге.
import os os.listdir('C:\\Users\\HP')
Выход:
[‘.android’, ‘.AndroidStudio3.5’, ‘.crashlytics’, ‘.eclipse’, ‘.emulator_console_auth_token’, ‘.gradle’, ‘.idlerc’, ‘.m2’, ‘.nbi’, ‘.netbeans-derby’, ‘.p2’, ‘.PyCharm2019.3’, ‘.RapidMiner’, ‘.tooling’, ‘.vscode’, ‘3D Objects’, ‘Anaconda3’, ‘Anaconda3_1’, ‘AndroidStudioProjects’, ‘AppData’, ‘Application Data’, ‘Contacts’, ‘Cookies’, ‘Desktop’, ‘Documents’, ‘Downloads’, ‘eclipse’, ‘eclipse-workspace’, ‘Favorites’, ‘get-pip.py’, ‘HP’, ‘IntelGraphicsProfiles’, ‘Links’, ‘Local Settings’, ‘MicrosoftEdgeBackups’]
5. Как удалить каталог
Функция rmdir() используется для удаления каталога, который уже пуст. Если каталог не пустой, он не будет удален.
import os os.rmdir('C:\\Users\\HP\\Pictures\\Screenshots\\python')
6. Проверить наличие
Функция os.path.exists(path) используется для проверки, существует ли конкретный каталог или нет.
import os os.path.exists('C:\\Users\\HP\\Pictures\\Screenshots')
Работа с файлами в 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)
Выводы
Работать с файлами и каталогами в Python очень просто. Не имеет значения даже используемая операционная система, хотя отдельные уникальные для системы функции можно использовать: например, os.chown() или os.chmod() в Linux. Более подробно эта тема освещена в официальной документации Python.