Python модули для работы с windows

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

Данный модуль можно применять во многих случаях. В данном разделе мы не рассмотрим каждый из них. Вместо этого, мы рассмотрим, как именно его можно применять, а также ознакомимся с подмодулем, под названием os.path. В частности, мы расскажем о:

  • os.name
  • os.environ
  • os.chdir()
  • os.getcwd()
  • os.getenv()
  • os.putenv()
  • os.mkdir()
  • os.makedirs()
  • os.remove()
  • os.rename()
  • os.rmdir()
  • os.startfile()
  • os.walk()
  • os.path

Это может выглядеть как большой объем материала, но есть еще минимум десяток других задач, которые модуль os может выполнять. Так что данный раздел можно назвать кратким экскурсом. Для использования любого из методов, упомянутых в данном разделе, вам нужно импортировать модуль os, вот так:

Итак, приступим!

os.name

Модуль os обладает как вызываемыми функциями, так и обычными значениями. В случае с os.name, речь идет только о значениях. При доступе к os.name, вы получите информацию о том, с какой платформой вы работаете. Вам откроются следующие значения: ‘posix’, ‘nt’, ‘os2’, ‘ce’, ‘java’, ‘riscos’. Давайте посмотрим на то, что выйдет, если запустить его на Windows 7:

import os

print(os.name) # ответ: nt

Это говорит нам о том, что наш экземпляр Пайтон работает в окне Windows. Как мы об этом узнали? Майкрософт начали называть свою операционную систему NT много лет назад. Например, Windows 7 также носит имя Windows NT 6.1.

os.environ, os.getenv() и os.putenv()

Значение os.environ известно как объект мэппинга (сопоставления), который работает со словарем переменных пользовательской среды. Возможно вы не знали, но каждый раз, когда вы пользуетесь своим компьютером, некоторые переменные среды уже установлены.

Это дает вам полезную информацию, такую как количество процессоров, тип ОЗУ, имя компьютера, и так далее. Посмотрим, что мы сможем узнать о нашем компьютере:

import os

print(os.environ)

Ответ:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

{‘ALLUSERSPROFILE’: ‘C:\ProgramData’,

‘APPDATA’: ‘C:\Users\mike\AppData\Roaming’,

‘CLASSPATH’: ‘.;C:\Program Files\QuickTime\QTSystem\QTJava.zip’,

‘COMMONPROGRAMFILES’: ‘C:\Program Files\Common Files’,

‘COMPUTERNAME’: ‘MIKE-PC’,

‘COMSPEC’: ‘C:\Windows\system32\cmd.exe’,

‘FP_NO_HOST_CHECK’: ‘NO’,

‘HOMEDRIVE’: ‘C:’,

‘HOMEPATH’: ‘\Users\mike’,

‘LOCALAPPDATA’: ‘C:\Users\mike\AppData\Local’,

‘LOGONSERVER’: ‘\\MIKE-PC’,

‘NUMBER_OF_PROCESSORS’: ‘2’,

‘OS’: ‘Windows_NT’,

‘PATHEXT’: ‘.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC’,

‘PROCESSOR_ARCHITECTURE’: ‘x86’,

‘PROCESSOR_IDENTIFIER’: ‘x86 Family 6 Model 15 Stepping 13, GenuineIntel’,

‘PROCESSOR_LEVEL’: ‘6’,

‘PROGRAMDATA’: ‘C:\ProgramData’,

‘PROGRAMFILES’: ‘C:\Program Files’,

‘PSMODULEPATH’: ‘C:\Windows\system32\WindowsPowerShell\v1.0\Modules\’,

‘PUBLIC’: ‘C:\Users\Public’,

‘PYTHONIOENCODING’: ‘cp437’,

‘QTJAVA’: ‘C:\Program Files\QuickTime\QTSystem\QTJava.zip’,

‘SESSIONNAME’: ‘Console’,

‘SYSTEMDRIVE’: ‘C:’,

‘SYSTEMROOT’: ‘C:\Windows’,

‘TEMP’: ‘C:\Users\mike\AppData\Local\Temp’,

‘TMP’: ‘C:\Users\mike\AppData\Local\Temp’,

‘USERDOMAIN’: ‘mike-PC’,

‘USERNAME’: ‘mike’,

‘USERPROFILE’: ‘C:\Users\mike’,

‘VBOX_INSTALL_PATH’: ‘C:\Program Files\Oracle\VirtualBox\’,

‘VS90COMNTOOLS’: ‘C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\’,

‘WINDIR’: ‘C:\Windows’,

‘WINDOWS_TRACING_FLAGS’: ‘3’,

‘WINDOWS_TRACING_LOGFILE’: ‘C:\BVTBin\Tests\installpackage\csilogfile.log’,

‘WINGDB_ACTIVE’: ‘1’,

‘WINGDB_PYTHON’: ‘c:\python27\python.exe’,

‘WINGDB_SPAWNCOOKIE’: ‘rvlxwsGdD7SHYIJm’}

Ваши данные будут отличаться от моих, так как конфигурация компьютера у всех немного отличается, однако вы определенно увидите большое количество совпадений. Как вы могли заметить, это вернуло словарь. Это значит, что вы можете получить доступ к значениям среды, пользуясь обычными словарными методами. Например:

import os

print(os.environ[«TMP»]) # C:\Users\mike\AppData\Local\Temp

Вы также можете использовать функцию os.getenv для доступа к этой переменной:

import os

print(os.getenv(«TMP»)) # C:\Users\mike\AppData\Local\Temp

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

import os

print(os.environ[«TMP2»])

Результат выполнения данного скрипта:

Traceback (most recent call last):

    File «<pyshell#1>», line 1, in <module>

        os.environ[«TMP2»]

    File «C:Python27libos.py», line 423, in __getitem__

        return self.data[key.upper()]

KeyError: ‘TMP2’

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

os.chdir() и os.getcwd()

Функция os.chdir позволяет нам вносить изменения в каталоге, который мы в данный момент используем в сессии. Если вам нужно знать, какой путь вы в данный момент используете, для этой нужно вызвать os.getcwd(). Попробуем воспользоваться обоими модулями:

import os

print(os.getcwd()) # C:\Python27

os.chdir(r«C:UsersmikeDocuments»)

print(os.getcwd()) # C:\Users\mike\Documents

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

os.mkdir() и os.makedirs()

Как вы могли догадаться, эти два метода используются для создания папок. Первая, os.mkdir(), позволяет создать одну папку. Попробуем:

import os

os.mkdir(«test»)

path = r‘C:UsersmikeDocumentspytest’

os.mkdir(path)

Первая строка кода создает папку под названием test в определенном каталоге. Вы можете использовать эти модули в предыдущем разделе, чтобы узнать, где именно вы запустили свой код, на случай, если вы забыли. Во втором примере мы назначили путь к переменной, затем к os.mkdir(). Это позволяет вам создать папку в любой точке вашей системы, где есть доступ. Функция os.makedirs() создает промежуточные папки в пути, если их там нет. В целом, это значит, что вы создали путь, в котором размещены папки. Лично я часто прибегал к данному решению, когда была необходимость создания журнала, с датированной структурой, например ГодМесяцДень. Давайте взглянем на пример:

import os

path = r‘C:UsersmikeDocumentspytest2014219’

os.makedirs(path)

Что произошло? Этот код просто создал кучу папок! Если в вашей системе все еще есть папка pytest, то в ней появится папка 2014, в которой также есть папка, в которой, удивительно, находится еще одна. Попробуйте сами, воспользовавшись рабочим путем в вашей системе.

os.remove() и os.rmdir()

Функции os.remove() и os.rmdir() используются для удаления файлов и каталогов соответственно. Посмотрим на os.remove():

import os

os.remove(«test.txt»)

Этот фрагмент кода пытается удалить файл под названием test.txt из вашего рабочего каталога. Если модуль не может найти файл, должно появиться уведомление о той или иной ошибке. Ошибка также возникнет, если файл уже используется (другими словами закрыт), или у вас нет разрешения для удаления данного файла. Возможно, вы хотите проверить os.unlink, который выполняет ту же функцию. Термин unlink – привычное для Unix название данной процедуры. Взглянем на пример работы os.rmdir():

import os

os.rmdir(«pytest»)

Данный код попытается удалить каталог под названием pytest из каталога, используемого в данный момент в работе. В случае, если это удалось, каталог pytest исчезнет. Ошибка может возникнуть, если каталога с таким названием не существует, если у вас нет разрешения на его удаление, или если каталог не пустой. Вам возможно хочется взглянуть на os.removedirs(), который может удалить пустые вложенные каталоги.

os.rename(src, dst)

Функция os.rename() применяется тогда, когда нужно переименовать файл или папку. Посмотрим на примере:

os.rename(«test.txt», «pytest.txt»)

В этом примере, мы указали os.rename на то, что нужно переименовать файл под названием test.txt на pytest.txt. Это произойдет в каталоге, с которым мы в данный момент работаем. Ошибка может возникнуть в том случае, если вы попытаетесь переименовать несуществующий файл, или если у вас нет доступа к данной операции. Также существует функция os.renames, которая меняет название папки или файла соответственно.

os.startfile()

Метод os.startfile() позволяет нам «запустить» файл в привязанной к нему программе. Другими словами, мы можем открыть файл вместе с привязанной к нему программой, как когда вы открываете файл PDF двойным щелчком, и он открывается в программе Adobe Reader. Попробуем:

import os

os.startfile(r‘C:UsersmikeDocumentslabels.pdf’)

В данном примере мы прошли полный путь к модулю os.startfile, который указывает на открытие файла под названием labels.pdf. На моем компьютере данная функция открывает файл PDF в программе Adobe Reader. Попробуйте открыть файлы PDF, MP3 или фотографии на своем компьютере при помощи данного метода, чтобы увидеть как он работает.

os.walk()

Метод os.walk() дает нам возможность для итерации на корневом уровне пути. Это значит, что мы можем назначить путь к этой функции и получить доступ ко всем её подкаталогам и файлам. Используем одну из папок Пайтон, при помощи которой мы можем проверить данную функцию. Мы используем C:Python27Tools

import os

path = r‘C:Python27Tools’

for root, dirs, files in os.walk(path):

    print(root)

Результат работы:

C:Python27Tools

C:Python27Toolsi18n

C:Python27Toolspynche

C:Python27ToolspyncheX

C:Python27ToolsScripts

C:Python27Toolsversioncheck

C:Python27Toolswebchecker

Мы можем отобразить и весь список каталогов и файлов.

import os

for root, dirs, files in os.walk(path):

    print(root)

    for _dir in dirs:

        print(_dir)

    for _file in files:

        print(_file)

Эта часть кода покажет нам весьма большой объем, так что не будем демонстрировать всю выдачу, вы можете ознакомиться с содержимым сами. Поздравляем, теперь мы готовы к тому, чтобы научиться работать с путями!

os.path

Подмодуль os.path модуля os имеет широкий ряд встроенных преимуществ. Ознакомимся со следующими функциями:

  • basename
  • dirname
  • exists
  • isdir and isfile
  • join
  • split

Это не все функции подмодуля. С ними мы можем ознакомиться позже.

os.path.basename

Функция basename вернет название файла пути. Пример:

import os

os.path.basename(r‘C:Python27ToolspyncheChipViewer.py’)

# ChipViewer.py

Это очень полезная функция, особенно в тех случаях, когда нужно использовать имя файла для наименования того или иного связанного с работой файла, например лог-файл. Такая ситуация возникает часто при работе с файлами данных.

Недорогие и качественные просмотры в Телеграм доступны на сайте ДокторСмм с оптовыми скидками и персональными предложениями. Здесь Вам удастся подобрать, как наиболее привлекательный формат ресурса, так и самую оптимальную скорость поступления, доходящую до 1000 единиц в сутки. При этом Вы можете покупать просмотры, как к конкретному посту, так и ко всей ленте в целом.

os.path.dirname

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

import os

print( os.path.dirname(r‘C:Python27ToolspyncheChipViewer.py’) )

# C:\Python27\Tools\pynche

В данном примере мы просто возвращаем путь к каталогу. Это также полезно, когда вам нужно сохранить другие файлы рядом с тем, который вы обрабатываете в данный момент. Как и в случае с лог-файлом, упомянутым выше.

os.path.exists

Функция exists говорит нам, существует ли файл, или нет. Все что вам нужно, это указать ему путь. Взглянем на пример:

import os

os.path.exists(r‘C:Python27ToolspyncheChipViewer.py’) # True

os.path.exists(r‘C:Python27Toolspynchefake.py’) # False

В первом примере, мы указали функции exists настоящий путь, на что она указывает как True. Это говорит о том, что данный путь существует. Во втором примере, мы указали неправильный путь, от чего функция указывает нам на это сообщением False.

os.path.isdir / os.path.isfile

Методы isdir и isfile тесно связаны с методом exists, так как они также тестируют присутствие или отсутствие файлов или папок на тех или иных путях. Однако, isdir проверяет только пути к папкам, а isfile, соответственно, к файлам. Если вам нужно проверить путь, и не важно, папка это или файл, проще будет воспользоваться методом exists. В любом случае, взглянем на пару примеров:

import os

os.path.isfile(r‘C:Python27ToolspyncheChipViewer.py’) # True

os.path.isdir(r‘C:Python27ToolspyncheChipViewer.py’) # False

os.path.isdir(r‘C:Python27Toolspynche’) # True

os.path.isfile(r‘C:Python27Toolspynche’) # False

Уделите особое внимание данным примерам. В первом мы указали путь к файлу и проверили, является ли этот путь в действительности файлом. Затем, во втором примере, мы проделали то же самое, но в контексте папки. Вы можете лично ознакомиться с результатами. После этих двух примеров, мы немного изменили условия, указав путь к папке для обеих функций. Эти примеры наглядно демонстрируют то, как эти функции работают.

os.path.join

Метод join позволяет вам совместить несколько путей при помощи присвоенного разделителя. К примеру, в Windows, в роли разделителя выступает бэкслэш (косая черта, указывающая назад), однако в Linux функция разделителя присвоена косой черте, указывающей вперед (forward slash). Как это работает:

import os

print( os.path.join(r‘C:Python27Toolspynche’, ‘ChipViewer.py’) )

# C:\Python27\Tools\pynche\ChipViewer.py

В данном примере мы совместили путь каталога и файла вместе, для получения рабочего пути. Обратите внимание на то, что метод join не указывает на то, какой результат в итоге вышел.

os.path.split

Метод split разъединяет путь на кортеж, который содержит и файл и каталог. Взглянем на пример:

import os

print( os.path.split(r‘C:Python27ToolspyncheChipViewer.py’) )

# (‘C:\Python27\Tools\pynche’, ‘ChipViewer.py’)

В данном примере показано, что происходит, когда мы указываем путь к файлу. Теперь взглянем на то, что происходит, если в конце пути нет названия файла:

import os

print( os.path.split(r‘C:Python27Toolspynche’) )

# (‘C:Python27Tools’, ‘pynche’)

Как видите, данная функция берет путь и разъединяет его таким образом, что подпапка стала вторым элементом кортежа с остальной частью пути в первом элементе. Напоследок, взглянем на бытовой случай использования split:

import os

dirname, fname = os.path.split(r‘C:Python27ToolspyncheChipViewer.py’)

print(dirname)

# C:\Python27\Tools\pynche

print(fname)

# ChipViewer.py

В данном примере указано, как сделать множественное назначение. Когда вы разъединяете путь, он становится кортежем, состоящим из двух частей. После того, как мы опробовали две переменные с левой части, первый элемент кортежа назначен к первой переменной, а второй элемент к второй переменной соответственно.

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

С данного момента модуль os можно смело назвать старым добрым знакомым. В данном разделе мы научились:

  1. Работать со значениями среды;
  2. Менять каталоги и находить тот, который в данный момент является рабочим;
  3. Создавать и удалять папки и файлы;
  4. Переименовывать папки и файлы;
  5. Открывать файл в соответствующей ему программе;
  6. Работать с путями.

И это не полный список того, что можно делать при помощи модуля os.

Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.

E-mail: vasile.buldumac@ati.utm.md

Образование
Universitatea Tehnică a Moldovei (utm.md)

  • 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
  • 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»

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

Что такое модуль os?

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

  • проверка существования объекта по заданному пути;
  • определение размера в байтах;
  • удаление;
  • переименование и др.

При вызове функций os необходимо учитывать, что некоторые из них могут не поддерживаться текущей ОС.

Чтобы пользоваться методами из os, нужно подключить библиотеку. Для этого в Python используется import os, который необходимо описать в файле до первого обращения к модулю.

Рекомендуется использовать эту инструкцию в начале файла с исходным кодом.

Функции модуля os

Методы из библиотеки os могут применяться пользователем для разных целей. Ниже показаны наиболее популярные из них, позволяющие получать данные о операционной системе. Также получать сведения о файлах и папках, хранимых в памяти на жестком диске ПК.

Получение информации об ОС

Чтобы узнать имя текущей ОС, достаточно воспользоваться методом name. В зависимости от установленной платформы, он вернет ее короткое наименование в строковом представлении. Следующая программа была запущена на ПК с ОС Windows 10, поэтому результатом работы функции name является строка nt. Увидеть это можно при помощи обычного метода print.

import os
print(os.name)

nt

Получить сведения, которые касаются конфигурации компьютера, можно при помощи метода environ. Вызвав его через обращение к библиотеке os, пользователь получает большой словарь с переменными окружения, который выводится в консоль или строковую переменную. Таким образом, можно узнать название системного диска, адрес домашней директории, имя системы и массу другой информации. Следующий пример демонстрирует применение environ.

import os
print(os.environ)

environ({'ALLUSERSPROFILE': 'C:\ProgramData', …})

При помощи функции getenv можно получить доступ к различным переменным среды. Чтобы сделать это, достаточно передать в качестве аргумента необходимое название переменной, как в следующем примере, где print выводит на экран сведения о TMP на дисплей в консоль.

import os
print(os.getenv("TMP"))

C:UsersadminAppDataLocalTemp

Изменение рабочей директории

По умолчанию рабочей директорией программы является каталог, где содержится документ с ее исходным кодом. Благодаря этому, можно не указывать абсолютный путь к файлу, если тот находится именно в этой папке. Получить сведения о текущей директории позволяет функция getcwd, которая возвращает полный адрес рабочего каталога на жестком диске. В следующем фрагменте кода показано что будет, если передать результат работы этого метода в print. Как можно заметить, рабочей директорией является каталог program на системном диске C.

import os
print(os.getcwd())

C:Usersadminsourcereposprogram

При желании, рабочую директорию можно настроить по своему усмотрению, применив метод chdir из библиотеки os. Для этого необходимо передать ему в качестве параметра абсолютный адрес к новому каталогу. Если указанного пути на самом деле не существует, программа будет завершена в аварийном режиме из-за выброшенного исключения. В следующем примере кода продемонстрирован переход к новой рабочей директории под названием folder на диске D.

import os
os.chdir(r"D:folder")

D:folder

Проверка существования пути

Чтобы избежать ошибок, связанных с отсутствием определенного файла или директории, которые должны быть обработаны программой, следует предварительно проверять их наличие с помощью метода exists. Передав ему в качестве аргумента путь к нужному файлу или папке, можно рассчитывать на лаконичный ответ в виде булевого значения true/false, сообщающего о наличии/отсутствии указанного объекта в памяти компьютера. В следующем примере идет проверка текстового файла test.txt из корневого каталога D, которая возвращает True.

import os
print(os.path.exists("D:/test.txt"))

True

Если объект на диске реально существует, это не всегда значит, что он имеет подходящую для дальнейшей обработки форму. Проверить, является ли определенный объект файлом, поможет функция isfile, которая принимает его адрес. Ознакомиться с результатом его работы можно из следующего примера, где print отображает на экране значение True для файла test.txt.

import os
print(os.path.isfile("D:/test.txt"))

True

Аналогичные действия можно выполнить и для проверки объекта на принадлежность к классу директорий, вызвав для его адреса метод isdir из библиотеки os. Как можно заметить, в данном случае print выводит на экран булево значение False, поскольку test.txt не является папкой.

import os
print(os.path.isdir("D:/test.txt"))

False

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

Возможности модуля os позволяют не только отображать информацию об уже существующих в памяти объектах, но и генерировать абсолютно новые. Например, с помощью метода mkdir довольно легко создать папку, просто указав для нее желаемый путь. В следующем примере в корневом каталоге диска D производится новая папка под названием folder через mkdir.

import os
os.mkdir(r"D:folder")

Однако на этом возможности по генерации директорий не заканчиваются. Благодаря функции makedirs можно создавать сразу несколько новых папок в неограниченном количестве, если предыдущая директория является родительской для следующей. Таким образом, в следующем примере показывается генерация целой цепочки папок из folder, first, second и third.

import os
os.makedirs(r"D:folderfirstsecondthird")

Удаление файлов и директорий

Избавиться от ненужного в дальнейшей работе файла можно с помощью метода remove, отдав ему в качестве аргумента абсолютный либо относительный путь к объекту. В небольшом коде ниже демонстрируется удаление документа test.txt из корневой директории диска D на ПК.

import os
os.remove(r"D:test.txt")

Чтобы стереть из памяти папку, следует воспользоваться встроенной функцией rmdir, указав ей адрес объекта. Однако здесь присутствуют определенные нюансы, поскольку программа не позволит беспрепятственно удалить директорию, в которой хранятся другие объекты. В таком случае на экране отобразится ошибка и будет выброшено исключение. В следующем примере производится процедура удаления пустой директории folder при помощи метода rmdir.

import os
os.rmdir(r"D:folder")

Для быстрого удаления множества пустых папок следует вызывать функцию removedirs. Она предоставляет возможность избавиться сразу от нескольких каталогов на диске, при условии, что все они вложены друг в друга. Таким образом, указав путь к конечной папке, можно легко удалить все родительские директории, но только если они в результате оказываются пустыми. В примере показано мгновенное удаление четырех разных папок: folder, first, second, third.

import os
os.removedirs(r"D:folderfirstsecondthird")

Запуск на исполнение

Встроенные функции библиотеки os позволяют запускать отдельные файлы и папки прямиком из программы. С этой задачей прекрасно справляется метод startfile, которому стоит передать адрес необходимо объекта. Программное обеспечение, используемое для открытия документа, определяется средой автоматически. Например, при запуске обычного файла test.txt, как это сделано в следующем примере, задействуется стандартный блокнот. Если передать функции ссылку на директорию, она будет открыта при помощи встроенного менеджера файлов.

import os
os.startfile(r"D:test.txt")

Получение имени файла и директории

Иногда для взаимодействия с документом необходимо получить его полное имя, включающее разрешение, но не абсолютный путь к нему на диске. Преобразовать адрес объекта в название позволяет функция basename, которая содержится в подмодуле path из библиотеки os. Таким образом, следующий пример показывает преобразование пути test.txt в простое имя файла.

import os
print(os.path.basename("D:/test.txt"))

test.txt

Обратная ситуация возникает тогда, когда пользователю нужно получить только путь к файлу, без самого названия объекта. Это поможет сделать метод dirname, который возвращает путь к заданному документу в строковом представлении, как это продемонстрировано в небольшом примере ниже. Здесь print выводит на экран адрес текстового документа в папке folder.

import os
print(os.path.dirname("D:/folder/test.txt"))

D:/folder

Вычисление размера

Чтобы определить размер документа или папки, стоит воспользоваться функцией getsize, как это показано в следующем примере для файла test.txt. Функция print выводит размер данного документа в байтах. Воспользоваться getsize можно и для измерения объема директорий.

import os
print(os.path.getsize("D:\test.txt"))

136226

Переименование

Библиотека os предоставляет возможность быстрой смены названия для любого файла или же каталога при помощи метода rename. Данная функция принимает сразу два разных аргумента. Первый отвечает за путь к старому наименованию документа, в то время как второй отвечает за его новое название. В примере показано переименование директории folder в catalog. Стоит помнить, что метод может генерировать исключение, если по указанному пути нет файла.

import os
os.rename(r"D:folder", r"D:catalog")

Переименовывать можно не только один каталог, но и несколько папок сразу, только если все они находятся в одной иерархической цепочке. Для этого достаточно вызвать метод renames и передать ему путь к конечной директории в качестве первого аргумента. В роли же второго параметра выступает аналогичный адрес к папке, но только с новыми именами всей цепочки. Следующий пример демонстрирует правильное использование функции renames, за счет чего было произведено переименование директорий folder, first и second в catalog, one и two.

import os
os.renames(r"D:folderfirstsecond", r"D:catalogonetwo")

Содержимое директорий

Проверить наличие в каталоге определенных объектов позволяет функция listdir. С её помощью можно получить информацию о файлах и папках в виде списка. В программе немного ниже показано, как метод принимает в качестве параметра путь к каталогу folder на диске D, а затем выводит название внутренней папки first и документа test.txt, вывод в консоль осуществляется с помощью print.

import os
print(os.listdir(r"D:folder"))

['first', 'test.txt']

Воспользовавшись методом walk, можно получить доступ к названиям и путям всех подпапок и файлов, относящихся к заданному каталогу. Применив один внешний цикл for, а также два вложенных, несложно получить информацию об объектах в каталоге folder через специальные списки directories и files. Сведения выдаются с помощью многократного обращения к print.

import os
for root, directories, files in os.walk(r"D:folder"):
    print(root)
    for directory in directories:
        print(directory)
    for file in files:
        print(file)

D:folder
first
D:folderfirst
second
D:folderfirstsecond
third
D:folderfirstsecondthird
test.txt

Информация о файлах и директориях

Вывести на экран или в любое другое место основные сведения об объекте можно через метод stat. Поместив ему в качестве параметра расположение файла или папки на диске компьютера, стоит ожидать небольшой массив информации. Здесь можно найти данные о размере объекта в байтах, а также некие числовые значения, отображающие доступ и режим его работы.

import os
print(os.stat(r"D:test.txt"))

os.stat_result(st_mode=33206, …)

Обработка путей

Возвращаясь к классу path из библиотеки os, стоит принять во внимание функцию split, позволяющую очень легко разъединять путь к файлу и имя файла в различные строки. Это демонстрируется на следующем примере с текстовым документом test.txt в папке folder.

import os
print(os.path.split(r"D:foldertest.txt"))

('D:\folder', 'test.txt')

Обратное действие выполняет функция join, позволяя легко соединить путь к документу с его названием. Как видно из результатов работы данного кода, благодаря print на экране будет отображаться путь, который ссылается на текстовый файл test.txt в каталоге folder на D.

import os
print(os.path.join(r"D:folder", "test.txt"))

D:foldertest.txt

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

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

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

os.name — имя операционной системы. Доступные варианты: ‘posix’, ‘nt’, ‘mac’, ‘os2’, ‘ce’, ‘java’.

os.environ — словарь переменных окружения. Изменяемый (можно добавлять и удалять переменные окружения).

os.getlogin() — имя пользователя, вошедшего в терминал (Unix).

os.getpid() — текущий id процесса.

os.uname() — информация об ОС. возвращает объект с атрибутами: sysname — имя операционной системы, nodename — имя машины в сети (определяется реализацией), release — релиз, version — версия, machine — идентификатор машины.

os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True) — проверка доступа к объекту у текущего пользователя. Флаги: os.F_OK — объект существует, os.R_OK — доступен на чтение, os.W_OK — доступен на запись, os.X_OK — доступен на исполнение.

os.chdir(path) — смена текущей директории.

os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True) — смена прав доступа к объекту (mode — восьмеричное число).

os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True) — меняет id владельца и группы (Unix).

os.getcwd() — текущая рабочая директория.

os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True) — создаёт жёсткую ссылку.

os.listdir(path=».») — список файлов и директорий в папке.

os.mkdir(path, mode=0o777, *, dir_fd=None) — создаёт директорию. OSError, если директория существует.

os.makedirs(path, mode=0o777, exist_ok=False) — создаёт директорию, создавая при этом промежуточные директории.

os.remove(path, *, dir_fd=None) — удаляет путь к файлу.

os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None) — переименовывает файл или директорию из src в dst.

os.renames(old, new) — переименовывает old в new, создавая промежуточные директории.

os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None) — переименовывает из src в dst с принудительной заменой.

os.rmdir(path, *, dir_fd=None) — удаляет пустую директорию.

os.removedirs(path) — удаляет директорию, затем пытается удалить родительские директории, и удаляет их рекурсивно, пока они пусты.

os.symlink(source, link_name, target_is_directory=False, *, dir_fd=None) — создаёт символическую ссылку на объект.

os.sync() — записывает все данные на диск (Unix).

os.truncate(path, length) — обрезает файл до длины length.

os.utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True) — модификация времени последнего доступа и изменения файла. Либо times — кортеж (время доступа в секундах, время изменения в секундах), либо ns — кортеж (время доступа в наносекундах, время изменения в наносекундах).

os.walk(top, topdown=True, onerror=None, followlinks=False) — генерация имён файлов в дереве каталогов, сверху вниз (если topdown равен True), либо снизу вверх (если False). Для каждого каталога функция walk возвращает кортеж (путь к каталогу, список каталогов, список файлов).

os.system(command) — исполняет системную команду, возвращает код её завершения (в случае успеха 0).

os.urandom(n) — n случайных байт. Возможно использование этой функции в криптографических целях.

os.path — модуль, реализующий некоторые полезные функции на работы с путями.

Интерфейсы операционной системы.

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

  • если нужно просто прочитать или записать файл, то лучше воспользоваться встроенной функцией open(),
  • для различных манипуляций с путями, то удобнее будет использовать модуль os.path или pathlib,
  • если необходимо прочитать все строки в файлах, указанных в командной строке, посмотрите на модуль fileinput,
  • для создания временных файлов и каталогов смотрите модуль tempfile,
  • для операций с файлами и каталогами (копирование, перемещение, создание, удаление) используйте модуль shutil.

Примечания о доступности функций модуля os:

  • Конструкция всех зависимых от Python модулей, встроенных в операционную систему, такова, что при наличии одинаковых функциональных возможностей он использует один и тот же интерфейс. Например, функция os.stat(path) возвращает статистическую информацию о пути в том же формате, который произошел от интерфейса POSIX.
  • Расширения, характерные для конкретной операционной системы, также доступны через модуль os, но их использование является угрозой переносимости ПО между системами.
  • Все функции, принимающие пути или имена файлов, принимают как байтовые строки, так и строковые объекты и приводят к объекту одного типа, если возвращается путь или имя файла.

Заметка. Все функции в этом модуле поднимают исключение OSError или их подклассы в случае недопустимых или недоступных имен и путей к файлам или других аргументов, которые имеют правильный тип, но не принимаются операционной системой.

os.error:

Исключение os.error это псевдоним для встроенного исключения OSError.

os.name:

os.name это имя импортируемого модуля, зависящего от операционной системы. В настоящее время зарегистрированы следующие имена: 'posix', 'nt', 'java'.

Смотрите также sys.platform имеет более тонкую детализацию, os.uname() дает системно-зависимую информацию о версии системы. Модуль platform содержит подробные проверки идентичности системы.

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

В Python имена файлов, аргументы командной строки и переменные окружения представлены с использованием строкового типа. В некоторых системах, перед передачей их операционной системе необходимо декодирование строк в байты и обратно. Python использует кодировку файловой системы для выполнения этого преобразования (смотрите sys.getfilesystemencoding()).

В некоторых системах преобразование с использованием кодировки файловой системы может завершиться ошибкой. В этом случае Python использует обработчик ошибок кодирования surrogateescape. Это означает, что некодируемые байты заменяются символом Unicode U + DCxx при декодировании, и они снова преобразуются в исходный байт при кодировании.

Кодировка файловой системы должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не обеспечивает эту гарантию, функции API могут вызывать ошибки UnicodeErrors.


Управление переменной средой окружения системы в Python.

Управление переменными средами environment из кода Python. Переменные среды обычно используются для значений конфигурации, таких как пути поиска, расположение файлов и т.д.

Представление пути в файловой системе в Python.

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

Извлечение/установка uid, gid и pid процесса в Python.

Функции для различных манипуляций с uid, gid и pid процесса. Чаще всего они используются авторами демонов или специальных системных программ, которым необходимо изменять уровень разрешений, а не запускаться от имени пользователя root.

Наследование файловых дескрипторов в Python.

Файловый дескриптор имеет «наследуемый» флаг, который указывает, может ли файловый дескриптор наследоваться дочерними процессами. Начиная с Python-3.4, файловые дескрипторы, созданные Python, по умолчанию не наследуются.

Создание дескриптора файла, чтение, запись и его закрытие в Python.

Создание файлового объекта средствами модуля os. Чтение, запись и закрытие файлового дескриптора, изменение прав доступа к нему. Получение статистики файлового дескриптора.

Функция listdir() модуля os в Python.

Функция listdir() модуля os возвращает список, содержащий имена файлов и директорий в каталоге, заданном путем path. Список приведен в произвольном порядке и не содержит специальных обозначений

Функция walk() модуля os в Python.

Функция walk() модуля os генерирует имена файлов в дереве каталогов, обходя дерево сверху вниз или снизу вверх. Для каждого каталога в дереве с корнем в вершине каталога top, включая саму вершину top, она выдает тройной кортеж (dirpath, dirnames, filenames).

Функция scandir() модуля os в Python.

Функция scandir() модуля os возвращает итератор объектов os.DirEntry, соответствующих записям в каталоге, заданном путем path. Записи приводятся в произвольном порядке, а специальные символы ‘.’ и ‘..’ не включены.

Объект DirEntry() модуля os в Python.

Объект DirEntry() модуля os получается в результате работы функции os.scandir(). Методы объекта DirEntry() предоставляют пути к файлу и другие атрибуты файлов, расположенных в сканируемом каталоге.

Функция stat() модуля os в Python.

Функция stat() модуля os получает статистическую информацию файла или дескриптора файла. Выполняет эквивалент системного вызова stat(). Функция stat() может поддерживать указание дескриптора файла и не следовать символическим ссылкам.

Объект stat_result в Python, результаты выполнения os.stat().

Объект stat_result модуля os имеет атрибуты, которые примерно соответствуют членам структуры системного вызова stat.

Функция lstat() модуля os в Python.

Функция `lstat()` модуля `os` выполняет эквивалент системного вызова `lstat() для данного пути. Похож на `os.stat()`, но не следует по символическим ссылкам.

Функция access() модуля os в Python.

Функция `access()` проверяет доступ к пути `path` для реальных `uid`/`gid`. Эту процедуру можно использовать в среде `suid`/`sgid` для проверки, имеет ли вызывающий пользователь указанный доступ к пути `path`

Функция chdir() модуля os в Python.

Функция `chdir()` модуля `os` изменяет текущий рабочий каталог.

Функция chmod() модуля os в Python.

Функция `chmod()` модуля `os` изменяет режим доступа к файлу или директории, указанного в `path`

Функция chown() модуля os в Python.

Функция `chown()` изменяет владельца и идентификатор группы пути на числовые значения `uid` и `gid`

Функция chroot() модуля os в Python.

Функция `chroot()` модуля `os` изменяет корневой каталог текущего процесса на путь файловой системы `path`.

Функция getcwd() модуля os в Python.

Функция `getcwd()` вернет строку, а функция `getcwdb()` вернет строку байтов представляющую текущий рабочий каталог.

Функция link() модуля os в Python.

Функция `link()` модуля `os` создает жесткую ссылку, указывающую на `src` с именем `dst`.

Функция mkdir() модуля os в Python.

Функция `mkdir()` модуля `os` создает каталог с именем `path` с режимом доступа к нему `mode`. Режим `mode` устанавливается последними 3 цифрами восьмеричного представления режима.

Функция makedirs() модуля os в Python.

Функция `makedirs()` модуля `os` рекурсивно создает все промежуточные каталоги, если они не существуют. Функция работает подобно `os.mkdir()`, но создает все каталоги промежуточного уровня

Функция symlink() модуля os в Python.

Функция `symlink()` модуля `os` создает символическую ссылку, указывающую на `src` с именем `dst`.

Функция readlink() модуля os в Python.

Функция `readlink()` модуля `os` вернет строку, представляющую путь, на который указывает символическая ссылка.

Функция remove() модуля os в Python.

Функция `remove()` модуля `os` удаляет путь `path` к файлу. Если путь является каталогом, возникает исключение `IsADirectoryError`. Функция `os.remove()` семантически идентична `os.unlink()`.

Функция removedirs() модуля os в Python.

Функция `removedirs()` модуля `os` удаляет каталоги рекурсивно. Если конечный каталог успешно удален, `os.removedirs()` пытается последовательно удалить каждый родительский каталог, указанный в пути, до появления ошибки. Появления ошибки обычно означает, что родительский каталог не пуст.

Функция rename() модуля os в Python.

Функция rename() модуля os переименовывает файл или каталог с именем src в dst. Если имя dst существует, операция, в ряде случаев, завершится с подклассом исключения OSError.

Функция renames() модуля os в Python.

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

Функция replace() модуля os в Python.

Функция `replace()` модуля `os` переименовывает файл или пустой каталог с исходным именем `src` в `dst`.

Функция rmdir() модуля os в Python.

Функция `rmdir()` модуля `os` удаляет путь к каталогу `path`. Если директория `path` не существует или не является пустым каталогом, то возникает исключение.

Функция strerror() модуля os в Python.

Функция strerror() модуля os возвращает сообщение об ошибке, соответствующее коду ошибки, которая появляется при сбое в коде приложения.

Функция supports_dir_fd модуля os в Python.

Функция `supports_dir_fd` модуля `os` возвращает объект `set`, указывающий, какие функции в модуле os принимают дескриптор открытого файла для своего параметра `dir_fd`.

Функция supports_effective_ids модуля os в Python.

Функция `supports_effective_ids` модуля `os` возвращает множество `set`, указывающее, разрешает ли функция `os.access()` указывать `True` для своего параметр `аffective_ids` на локальной платформе.

Функция supports_fd модуля os в Python.

Функция `supports_fd` модуля `os` возвращает объект `set`, указывающий, какие функции в модуле os позволяют указывать параметр пути в качестве дескриптора открытого файла на локальной платформе.

Функция supports_follow_symlinks модуля os в Python.

Функция `os.supports_follow_symlinks()` возвращает множество `set`, которое указывает какие функции в модуле `os` принимают `False` для их параметра `follow_symlinks` на локальной платформе.

Функция truncate() модуля os в Python.

Функция `truncate()` модуля `os` обрезает файл, соответствующий пути `path`, так, чтобы он имел длину не более `length` байтов.

Функция utime() модуля os в Python.

Функция `utime()` модуля `os` устанавливает/изменяет время доступа к файлу и время изменения файла, указанного в `path`.

Манипулирование списком контроля доступа ACL в Linux в Python.

Примером использования расширенных атрибутов OS Linux является реализация списков контроля доступа POSIX ACL.

Функция abort() модуля os в Python.

Функция `abort()` модуля `os` генерирует сигнала `SIGABRT` для текущего процесса.

Функция exec*() модуля os в Python.

Все эти функции выполняют новую программу, заменяя текущий процесс. Они ничего не возвращают. В Unix новый исполняемый файл загружается в текущий процесс и будет иметь тот же идентификатор процесса, что и вызывающая программа. Ошибки будут сообщаться как исключения `OSError`.

Функция popen() модуля os в Python.

Функция popen() модуля os откроет канал для чтения или записи стандартного ввода-вывода запущенной команды cmd.

Функция system() модуля os в Python.

Функция system() модуля os выполяет команду command в подоболочке (subshell). Это реализуется путем вызова стандартной функции языка Си system() и имеет те же ограничения.

Функция _exit() модуля os в Python.

Функция `_exit()` модуля `os` осуществляет выход из процесса со статусом `n`, без вызова обработчиков очистки, сброса буферов `stdio` и т. д.

Функция fork() модуля os в Python.

Функция `fork()` модуля `os` форкает дочерний процесс. Возвращает `0` в дочернем элементе и идентификатор дочернего процесса в родительском элементе.

Функция kill() модуля os в Python.

Функция `kill()` модуля `os` послает сигнал `sig` на процессу `pid`.

Функция spawn() модуля os в Python.

Функции `os.spawn*()` запускают программу, расположенную по указанному пути в файловой системе в новом процессе.

Функция umask() модуля os в Python.

Функция `umask()` модуля `os` устанавливает текущий `umask` пользователя в числовое значение `mask` и возвращает предыдущий `umask`.

Функция uname() модуля os в Python.

Функция os.uname() возвращает информацию, идентифицирующую текущую операционную систему. Возвращаемое значение — это объект с пятью атрибутами

Функция wait() модуля os в Python.

Функция os.wait() возвращает идентификатор процесса и код завершения, упакованный в 16-битовое значение. Младший байт представляет номер сигнала, прекратившего выполнение процесса, а старший — код состояния, возвращенный процессом по его завершении.

Функция waitpid() модуля os в Python.

Функция waitpid() модуля os в Unix: ждет завершения дочернего процесса, заданного идентификатором процесса pid, и возвращает кортеж, содержащий его идентификатор процесса и индикацию состояния выхода, закодированную как для os.wait().

Определение состояния процесса в Python.

Следующие функции принимают в качестве параметра `status` код состояния процесса, возвращаемый `os.system()`, `os.wait()` или `os.waitpid()`. Они могут быть использованы для определения диспозиции процесса.

Константы для поддержки операций с путями в Python.

Значения используемые для поддержки операций с путями.

Генератор случайных байтов на основе модуля os в Python.

Генерация случайных байтов операционной системой.

Функция startfile() модуля os в Python.

Функция startfile() модуля os запускает файл в Windows с помощью связанного с ним приложения на основе расширения.

Функция times() модуля os в Python.

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

Функции getloadavg() и cpu_count() модуля os в Python.

В этом разделе представлены функции определения количества ядер сервера и уровня загрузки системы (load average).

Функция waitstatus_to_exitcode() модуля os в Python.

Функция waitstatus_to_exitcode() модуля os преобразует статус ожидания в код выхода.

Одна из отличительных черт Python — его невероятная расширяемость. Модули из списка, представленного в нашей статье, покрывают практически все нужды разработчика. С их помощью вы сможете работать с базами данных, графическими пользовательскими интерфейсами, изображениями, звуком и т. д.

Графический интерфейс

В стандартной библиотеке Python есть
графическая библиотека интерфейсов
Tkinter. Но при помощи внешних модулей вы
можете поднять GUI ваших приложений на
новый уровень.

wxPython. Создает по-настоящему нативные пользовательские интерфейсы для Python-приложений, которые могут запускаться на Windows, Mac и Linux, а также прочих Unix-подобных системах практически без каких-либо модификаций.

PyGObject. Пакет Python, предоставляющий привязки для библиотек на базе Gobject, таких как GTK, GStreamer, WebKitGTK, GLib, GIO и др.

Pmw. Набор инструментов для создания на Python высокоуровневых составных виджетов (с использованием модуля Tkinter).

WCK. Расширение API, позволяющее реализовывать на чистом Python всевозможные пользовательские виджеты.

Tix. Мощный набор компонентов пользовательского интерфейса, при помощи которого можно расширить возможности ваших Tcl/Tk и Python-приложений. Использование Tix вместе с Tk очень улучшает внешний вид и функционал приложений.

Базы данных

Модули, перечисленные в этом разделе,
имеют открытый исходный код. С их помощью
можно существенно облегчить доступ к
базам данных.

MySQLdb. Python DB API-2.0-совместимый интерфейс для доступа к базам данных MySQL.

PyGreSQL. Модуль, который служит интерфейсом для базы данных PostgreSQL. Он дает возможность работать с PostgreSQL-фичами из Python-скрипта.

Gadfly. Простая реляционная СУБД, реализованная на Python (на основе SQL).

SQLAlchemy. Библиотека Python для работы с базами данных с применением ORM. Позволяет разработчикам приложений использовать всю мощь и гибкость SQL.

KinterbasDB. Расширение Python, реализующее поддержку совместимости Python Database API 2.0 для опенсорсной реляционной базы данных Firebird и некоторых версий ее проприетарной кузины — Borland Interbase.

Веб-разработка

Python это популярный язык для веб-разработки.
Все пакеты Python, перечисленные в этом
разделе, делают жизнь веб-разработчика
гораздо проще.

Beautiful Soup. Библиотека Python для быстрого парсинга HTML- и XML-файлов.

scrape. Модуль Python для веб-браузинга и скрапинга.

mechanize. Очень полезный модуль, благодаря которому вы получаете эмулятор браузера для взаимодействия с веб-страницами.

libgmail. Обеспечивает доступ к гугловскому сервису Gmail.

Google Maps. Благодаря этому модулю можно использовать веб-сервисы платформы Google Maps в своем приложении на Python.

Requests позволяет невероятно легко отсылать HTTP/1.1-запросы.

Selenium. При помощи этого модуля разработчики могут программными методами открывать веб-страницы, заполнять поля, кликать по кнопкам и отсылать формы.

pyquery позволяет делать jQuery-запросы в XML-документах. API этой библиотеки максимально приближен к jQuery. Для быстрой манипуляции с XML и HTML pyquery использует LXML.

Манипуляции с изображениями
и видео

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

Python Imaging Library (PIL). PIL добавляет в интерпретатор Python возможность обработки изображений. Эта библиотека поддерживает много форматов файлов и предоставляет хороший функционал для работы с графикой.

Gdmodule. Это интерфейс для библиотеки GD, созданной Томасом Баутелом.

VideoCapture. Win32-расширение для доступа к таким видеоустройствам, как веб-камеры (USB) и ТВ-карты.

MoviePy. Библиотека Python для редактирования видео: обрезка, склейка, вставка надписей, нелинейное редактирование, обработка видео и создание пользовательских эффектов.

pyscreenshot. Кроссплатформенный модуль, позволяющий делать скриншоты без установки сторонних библиотек.

Data Science и математика

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

SciPy. SciPy (произносится как «сай пай») это экосистема программного обеспечения с открытым кодом для математики, науки и инженерии.

Matplotlib. Библиотека Python для создания 2D-графиков. Генерирует пригодные для печати изображения в разных форматах. Matplotlib может использоваться в скриптах, интерпретаторе Python, в Jupyter Notebook, на серверах веб-приложений и в GUI-инструментарии.

Pandas. Быстрый, мощный, гибкий и легкий в использовании инструмент для анализа данных и работы с данными. Имеет открытый исходный код.

Numpy. Библиотека, обеспечивающая поддержку больших, многомерных массивов и матриц. Для работы с этими массивами Numpy имеет обширную коллекцию высокоуровневых математических функций.

Разработка игр

Python — это очень разносторонний язык,
позволяющий программистам создавать
самые разнообразные приложения, включая
видеоигры.

Pygame. Набор модулей для написания видеоигр. Pygame расширяет функционал прекрасной библиотеки SDL. Благодаря ему на Python можно создавать полнофункциональные игры и мультимедиа-программы.

Pyglet. Мощная, но при этом простая в использовании библиотека Python для разработки игр и других приложений с большим количеством визуальных эффектов для Windows, Mac OS X и Linux.

pyOpenGL. Этот модуль чаще других используется для обеспечения работы с библиотекой OpenGL и связанными с нею API в программах на Python.

Звук

Благодаря нескольким очень полезным
модулям работать со звуком в Python довольно
просто.

pySonic. Python-враппер для высокопроизводительной кроссплатформенной звуковой библиотеки FMOD.

PyMedia. Модуль Python для манипуляций с файлами WAV, MP3, Ogg, AVI, DivX, DVD, CD-DA и др. Позволяет анализировать, демультиплексировать и мультиплексировать, декодировать и кодировать все поддерживаемые форматы. Может компилироваться для Windows, Linux и Cygwin.

PMIDI. Библиотека PMIDI служит оберткой для библиотеки Windows MIDI Streams, обеспечивая возможность использования последней в Python. Благодаря PMIDI разработчики могут на лету генерировать в своем коде синтезированные музыкальные последовательности, чтобы они проигрывались для пользователей.

Mutagen. Модуль для обработки метаданных аудио. Поддерживает аудиофайлы FLAC, M4A, Musepack, MP3, Ogg FLAC, Ogg Speex, Ogg Theora, Ogg Vorbis, True Audio и WavPack.

Mac OS

Python очень хорошо интегрируется с Mac
OS. Следующие модули могут пригодиться
при разработке приложений для ОС Apple.

py2app. Это setuptools-команда, позволяющая создавать пакеты приложений и плагины для Mac OS X из Python-скриптов.

PyObjC. PyObjC это своего рода мост между Python и Objective-C. Благодаря ему можно создавать полнофункциональные Cocoa-приложения на чистом Python.

USB и последовательные порты

Знаете ли вы, что при помощи Python можно
получить доступ к USB и последовательным
портам компьютера? Если вам нужно решить
подобную задачу, следующие модули
помогут вам в этом.

PyUSB. Это простой в использовании модуль для доступа к USB-устройствам. PyUSB опирается на нативную системную библиотеку для USB-доступа. Работает «из коробки» с libusb 0.1, libusb 1.0, libusbx, libusb-win32 и OpenUSB, а также с Python в любой версии, начиная с 2.4 (и включая Python 3).

PySerial. Библиотека Python для доступа к последовательным портам.

USPP. Мультиплатформенный модуль Python для доступа к последовательным портам.

Разное

В таблице ниже вы найдете интересные модули, которые нельзя было отнести к какой-либо категории.

Категория Название Ссылка
Network Twisted http://twistedmatrix.com/
Jabber jabberpy http://jabberpy.sourceforge.net/
Expect pyExpect https://pexpect.readthedocs.io/en/latest/
3D VPython http://vpython.org/

Понравилась статья? Поделить с друзьями:
  • Python интерпретатор скачать для windows 10 64 bit
  • Python запуск скрипта при старте windows
  • Python запуск скрипта в фоновом режиме windows
  • Python для системного администратора windows книга
  • Python для windows server 2008 r2