Python создать папку linux

Работа с файлами в 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") 

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

Читайте также:  Ultraiso аналог в linux

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

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

Для создания файлов в 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.

    Источник

    Модуль Python os — примеры создания и работы с папками и путями

    Работа с папками и создание путей с модулем OS в Python

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

    Модуль OS не нуждается в дополнительной установке, так как поставляется вместе с инсталлятором Python.

    Получение директорий и списка файлов

    Есть несколько способов вернуть список каталогов и файлов по указанному пути. Первый способ используя os.walk, который возвращает генератор:

    import os path = 'C:/windows/system32/drivers/' print(path)

    Получение списка папок и файлов с библиотекой os в Python

    Такие объекты можно итерировать для понятного отображения структуры:

    import os path = 'C:/Folder1' for el in os.walk(path): print(el)

    Обработка списка директорий и файлов с библиотекой os в Python

    Сам кортеж делится на 3 объекта: текущая директория, имя вложенных папок (если есть), список файлов. Я так же разделил их на примере ниже:

    import os path = 'C:/Folder1' for dirs,folder,files in os.walk(path): print('Выбранный каталог: ', dirs) print('Вложенные папки: ', folder) print('Файлы в папке: ', files) print('\n')

    Разделение директорий и папок с библиотекой os в Python

    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))

    Вывод первой директории с OS walk в Python

    Получение файлов через listdir

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

    import os path = 'C:/Folder1' directory = os.listdir(path) print(directory)

    Вывод списка файлов и папок с библиотекой os.listdir в Python

    Получение полного абсолютного пути к файлам

    Для последующего чтения файла нам может понадобится абсолютный путь. Мы можем использовать обычный метод сложения строк или метод 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.join в Python

    Исключение каталогов или файлов из списка

    У нас может быть список полных путей, например из списка выше, из которого мы хотим исключить папки или файлы. Для этого используется 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.os.isfile()

    Такой же принцип имеют следующие методы:

    Получение расширения файлов

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

    import os path = ['C:/Folder1', 'C:/Folder1/Folder2/file2.txt'] for el in path: print(os.path.splitext(el))

    Получение расширений файлов с os.path.splittext в Python

    os.path.basename(path) — вернет имя файла и расширение.

    Создание и удаление директорий

    Методы по изменению папок следующие:

    import os # Имя новой папки path = 'C:/Folder1/NewFolder' # Ее создание os.mkdir(path) # Переименуем папку os.rename(path, 'C:/Folder1/NewFolder2') # Удалим os.rmdir('C:/Folder1/NewFolder2') 

    Создание и удаление директорий в Python с os.mkdir и os.rmdir

    Если попытаться создать несколько вложенных папок сразу, используя предыдущий пример, появится ошибка 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)

    Проверка существование пути с os.path.exists в Python

    Получение и изменение текущей директории

    Запуская любую программу или консоль, например CMD, мы это делаем из определенной директории. С этой и соседней директорией мы можем работать без указания полного пути. Для того что бы узнать такую директорию в Python используется метод os.getcwd():

    import os current_dir = os.getcwd() print(current_dir)

    Получение текущей директории с os.getcwd в Python

    В директории ‘D:\’ сохранен мой файл, с которого я запускаю методы. Вы можете изменить такую директорию с os.chdir() . Такой подход удобен, когда файлы, с которыми вы работаете в основном находятся в другом месте и вы сможете избежать написания полного пути:

    import os current_dir = os.getcwd() print(current_dir) new_dir = os.chdir('D:/newfolder/') print(os.getcwd())

    Изменение директории с Python os.chdir

    Так же как и в любых языках, в любых методах описанных выше, вы можете использовать ‘..’ для работы с директорией выше или ‘/’ для работы со внутренней:

    import os # Текущая директория print(os.getcwd()) # Переход во внутреннюю old_dir = os.chdir('/newfolder/') print(os.getcwd()) # Переход на уровень выше new_dir = os.chdir('..') print(os.getcwd())

    Источник

Оцените статью
Adblock
detector