Каждый разработчик в процессе работы нередко сталкивается с необходимостью взаимодействия с операционной системой: будь то чтение или запись файлов, работа с директориями или запуск внешних процессов. Для таких задач в Python существует модуль os.
Модуль os — это встроенный модуль Python, предоставляющий средства для работы с операционной системой, включая возможность взаимодействия с файловой системой и управления процессами. Он предоставляет удобный и кроссплатформенный способ выполнения большинства необходимых операций с файлами, каталогами и процессами.
Одно из главных преимуществ модуля os — кроссплатформенность. Хотя в различных операционных системах могут быть свои особенности управления файлами и процессами, модуль os пытается минимизировать эти различия и предоставить унифицированный интерфейс для работы.
Модуль os в Python предоставляет множество методов для взаимодействия с файловой системой. Независимо от того, разрабатываете ли вы инструменты для анализа данных или утилиты для автоматизации, знание этих функций окажется крайне полезным.
Чтобы определить текущий рабочий каталог:
import os
current_directory = os.getcwd()
print(current_directory)
Для смены текущего рабочего каталога используйте:
os.chdir('/path/to/new/directory')
Создание каталогов:
os.mkdir('new_directory')
Создать каталог вместе с необходимыми родительскими каталогами:
os.makedirs('parent_directory/child_directory')
Удалить один каталог (он должен быть пустым):
os.rmdir('empty_directory')
Удалить каталог и все его родительские пустые каталоги:
os.removedirs('parent_directory/child_directory')
Удалить файл:
os.remove('file.txt')
Переименовать файл или директорию:
os.rename('old_name.txt', 'new_name.txt')
Для просмотра списка файлов и директорий в каталоге используйте:
files_and_directories = os.listdir('.')
print(files_and_directories)
Для обхода всех директорий и файлов в директории:
for dirpath, dirnames, filenames in os.walk('.'):
print(f'Found directory: {dirpath}')
for file_name in filenames:
print(file_name)
Модуль os предоставляет также подмодуль path для работы с путями.
Проверка существования:
if os.path.exists('file.txt'):
print('File exists')
Проверка на файл/директорию:
if os.path.isfile('file.txt'):
print('It is a file')
if os.path.isdir('directory'):
print('It is a directory')
Получение абсолютного пути:
absolute_path = os.path.abspath('file.txt')
Переменные окружения — это пары ключ-значение, которые могут использоваться для конфигурации поведения системы или приложений. В Python с помощью модуля os можно легко взаимодействовать с этими переменными.
Переменные окружения доступны в Python как словарь os.environ
:
import os
# Получить значение переменной окружения PATH
path_variable = os.environ.get('PATH')
print(path_variable)
Вы можете устанавливать значения переменных окружения, но эти изменения будут видны только текущему процессу:
os.environ['MY_VARIABLE'] = 'my_value'
Чтобы удалить переменную окружения:
del os.environ['MY_VARIABLE']
Однако стоит помнить, что удаление или изменение переменной окружения через os.environ
изменяет ее только для текущего процесса. Эти изменения не будут видны другим процессам или приложениям и не сохранятся после завершения вашей программы.
Так как os.environ
представляет собой словарь, вы можете использовать стандартные операции со словарями:
if 'MY_VARIABLE' in os.environ:
print('Variable exists!')
else:
print('Variable does not exist.')
Для получения списка всех переменных окружения и их значений:
for key, value in os.environ.items():
print(f"{key} = {value}")
Модуль os в Python предоставляет инструменты для управления процессами и взаимодействия с операционной системой на более низком уровне. Рассмотрим, как создавать, контролировать и управлять процессами с помощью этого модуля.
Одна из ключевых функций модуля os — это fork()
. Она позволяет создать дочерний процесс:
import os
pid = os.fork()
if pid == 0:
# Этот блок будет выполнен в дочернем процессе
print('Я дочерний процесс')
else:
# Этот блок будет выполнен в родительском процессе
print('Я родительский процесс')
Примечание: Функция fork()
доступна только в UNIX-подобных системах.
os.getpid()
: Возвращает идентификатор текущего процесса.
os.getppid()
: Возвращает идентификатор родительского процесса.
print(f"Текущий процесс ID: {os.getpid()}")
print(f"Родительский процесс ID: {os.getppid()}")
Функция os.system(command)
позволяет выполнить команду в субшелле:
os.system('ls -l')
os._exit(status)
: Выход из процесса с указанным статусом.
import os
pid = os.fork()
if pid == 0:
print('Дочерний процесс завершается')
os._exit(0)
os.wait()
: Ожидает завершения дочернего процесса и возвращает кортеж, содержащий идентификатор завершенного дочернего процесса и статус завершения.
import os
pid = os.fork()
if pid == 0:
print('Дочерний процесс')
else:
child_pid, status = os.wait()
print(f"Дочерний процесс с ID {child_pid} завершился со статусом {status}")
Модуль os в Python — это мощный и универсальный инструмент для работы с операционной системой. Он делает процесс взаимодействия с файлами, каталогами и процессами простым и понятным, обеспечивая при этом кроссплатформенные возможности.
Содержание: