OS Python

Основы

Введение в тему

Модуль os Python предоставляет возможность взаимодействовать с операционной системой, независимо от того, какая из них установлена на устройстве, что делает программы универсальными.

Этот модуль является частью стандартной библиотеки и не требует установки.

Модуль os предоставляет множество функций, которые можно применять при работе с операционной системой. В этом уроке Вы изучите основные возможности данной библиотеки.

os chdir и os getcwd

Функция os.chdir даёт возможность сменить директорию. При запуске скрипта базовой папкой является та, в которой этот скрипт был запущен.

Узнать полный текущий путь к рабочей папке позволяет функция os.getcwd().

Приведём пример использования обеих функций:

import os

print("Текущая директория:", os.getcwd())
os.chdir(r"C:\Users\Dushenko\Desktop")
print("Новая директория:", os.getcwd())
# Вывод:

Текущая директория: C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1\scratches

Новая директория: C:\Users\Dushenko\Desktop

Листинг этой программы демонстрирует нам, что была открыта папка по умолчанию в Питоне. После этого директория была изменена при помощи os.chdir(). Затем была вызвана os.getcwd() еще раз, что продемонстрировало изменение директории.

os mkdir и os makedirs

Этот метод предназначен для создания новой папки в текущей. Выкидывает исключение OSError, если папка уже существует.

import os

print("Содержимое текущей директории:", os.listdir())
os.mkdir('new_scratches')
print("Содержимое текущей директории:", os.listdir())
# Вывод:

Содержимое текущей директории: ['scratch.py']

Содержимое текущей директории: ['new_scratches', 'scratch.py']

os.makedirs — создаёт директорию, создавая при этом промежуточные директории.

import os

print("Содержимое текущей директории:", os.listdir())
os.makedirs('new_scratches/example')
print("Содержимое текущей директории:", os.listdir())
os.chdir(os.getcwd() + r'\\new_scratches')
print("Содержимое директории new_scratches:", os.listdir())
# Вывод:

Содержимое текущей директории: ['scratch.py']

Содержимое текущей директории: ['new_scratches', 'scratch.py']

Содержимое директории new_scratches: ['example']

os remove и os rmdir

Эта функция предназначена для удаления файлов.


import os

print("Содержимое текущей директории:", os.listdir())
os.remove('example.txt')
print("Содержимое текущей директории:", os.listdir())
# Вывод:

Содержимое текущей директории: ['example.txt', 'scratch.py']

Содержимое текущей директории: ['scratch.py']

os.rmdir используется для удаления папок. Эта функция будет работать только для пустых директорий.
import os

os.mkdir('example')
print("Содержимое текущей директории:", os.listdir())
os.rmdir('example')
print("Содержимое текущей директории:", os.listdir())
# Вывод:

Содержимое текущей директории: ['example', 'scratch.py']

Содержимое текущей директории: ['scratch.py']

os rename src dst

Функция os.rename() применяется для изменения имени файлов или папок.

import os

os.mkdir('example')
print("Содержимое текущей директории:", os.listdir())
os.rename('example', 'пример')
print("Содержимое текущей директории:", os.listdir())
# Вывод:

Содержимое текущей директории: ['example', 'scratch.py']

Содержимое текущей директории: ['scratch.py', 'пример']

os startfile

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

import os

print("Содержимое текущей директории:", os.listdir())
os.startfile('example.py')
# Вывод:

Содержимое текущей директории: ['example.py', 'scratch.py']

В результате выполнения этого кода файл ‘example.py’ откроется в программе по умолчанию. Если Питоновские файлы у Вас ассоциированы со средой обработки, то откроется в ней, иначе этот скрипт исполнится.

os walk

Функция os.walk() возвращает объект-генератор, из которого получают кортежи для каждого каталога переданной файловой иерархии.

Каждый кортеж состоит из трех элементов:

Адрес очередного каталога в виде строки.

В форме списка имена подкаталогов первого уровня вложенности для данного каталога.

В виде списка имена файлов данного каталога.

import os

print("Содержимое текущей директории:", os.listdir())
walk = os.walk('..')
for item in walk:
print(item)
# Вывод:

…

('..\\scratches', [], ['example.py', 'scratch.py'])

('..\\ssl', [], [])

…

os path

Модуль os.path включает в себя несколько функции для работы с путями файловой системы. Параметры пути должны быть переданы в формате строк или байтов. Вместо этого модуля рекомендуется использовать модуль pathlib, доступный в стандартной библиотеке Питона начиная с версии 3.4.

os path basename

Функция basename() модуля os.path возвращает базовое имя пути.

import os

path = os.getcwd()
print("Текущая директория:", path)
print('Базовое имя пути:', os.path.basename(path))
# Вывод:

Текущая директория: C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1\scratches

Базовое имя пути: scratches

os path dirname

Функция dirname возвращает ту часть пути, которую составляет каталог пути.

import os

path = os.getcwd()
print("Текущая директория:", path)
print('Базовое имя пути:', os.path.dirname(path))
# Вывод:

Текущая директория: C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1\scratches

Базовое имя пути: C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1

os path exists

Функция exists  модуля os.path проверяет, существует ли указанный файл.

import os

print(r'Существует ли путь C:\Users:', os.path.exists(r'C:\Users'))
print(r'Существует ли путь C:\Example:', os.path.exists(r'C:\Example'))
# Вывод:

Существует ли путь C:\Users: True

Существует ли путь C:\Example: False

os path isdir os path isfile

Функции isdir и isfile проверяют присутствие или отсутствие файлов или директорий в указанном пути. isdir проверяет наличие директории, а isfile — файла.

import os

print(r'C:\Users - это файл?', os.path.isfile(r'C:\Users'), sep='\n')
print(r'C:\Users - это папка?', os.path.isdir(r'C:\Users'), sep='\n')
# Вывод:

C:\Users — это файл?

False

C:\Users — это папка?

True

os path join

В разных операционных системах используется разный разделитель пути. В Виндовс это бекслеш, а в Линукс – слеш. Как же сделать объединение путей в Вашей программе универсальным?

Функция join предназначена для объединения нескольких путей в любой OS.

import os

path = os.getcwd()
print("Текущая директория:", path)
print("Добавим 'example':", new_path := os.path.join(path, r"example"))
print("Но существует ли этот путь?", os.path.exists(new_path))
# Вывод:

Текущая директория: C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1\scratches

Добавим 'example': C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1\scratches\example

Но существует ли этот путь? False

os path split

Метод split принимает путь и возвращает кортеж, состоящий из базового имени пути и каталога пути.

import os

path = os.getcwd()
print("Текущая директория:", path)
print("Базовое имя пути:", os.path.split(path)[1], sep='\n')
print("Каталог пути:", os.path.split(path)[0], sep='\n')
# Вывод:

Текущая директория: C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1\scratches

Базовое имя пути:

scratches

Каталог пути:

C:\Users\Dushenko\AppData\Roaming\JetBrains\PyCharm2021.1

Подведем итоги

Модуль os предоставляет множество функций для работы с операционной системой, причём их поведение, как правило, не зависит от ОС, поэтому программы остаются переносимыми. Здесь будут приведены наиболее часто используемые из них.

Будьте внимательны: некоторые функции из этого модуля поддерживаются не всеми ОС.

Иван Душенко
Автор статьи
Задать вопрос

Оцените статью
О Python на русском языке
Добавить комментарий

Adblock
detector