> **Источник:** https://python-all.ru/2.7/library/commands.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 36.16. [`commands`](https://python-all.ru/2.7/library/commands.html#module-commands) – Утилиты для запуска команд

Устарело с версии 2.6: Модуль [`commands`](https://python-all.ru/2.7/library/commands.html#module-commands) был удалён в Python 3. Используйте модуль [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess) вместо него.

Модуль [`commands`](https://python-all.ru/2.7/library/commands.html#module-commands) содержит функции-обёртки для [`os.popen()`](https://python-all.ru/2.7/library/os.html#os.popen), которые принимают системную команду в виде строки и возвращают любой вывод, сгенерированный командой, и, опционально, код завершения.

Модуль [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess) предоставляет более мощные средства для порождения новых процессов и получения их результатов. Использование модуля [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess) предпочтительнее использования модуля [`commands`](https://python-all.ru/2.7/library/commands.html#module-commands).

> **Примечание**
>
> В Python 3.x [`getstatus()`](https://python-all.ru/2.7/library/commands.html#commands.getstatus) и две недокументированные функции (`mk2arg()` и `mkarg()`) были удалены. Кроме того, [`getstatusoutput()`](https://python-all.ru/2.7/library/commands.html#commands.getstatusoutput) и [`getoutput()`](https://python-all.ru/2.7/library/commands.html#commands.getoutput) были перемещены в модуль [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess).

Модуль [`commands`](https://python-all.ru/2.7/library/commands.html#module-commands) определяет следующие функции:

#### `commands.getstatusoutput(cmd)`

Выполняет строку *cmd* в оболочке с помощью [`os.popen()`](https://python-all.ru/2.7/library/os.html#os.popen) и возвращает кортеж из двух элементов `(status, output)`. Строка *cmd* на самом деле выполняется как `{ cmd ; } 2>&1`, так что возвращаемый вывод будет содержать вывод или сообщения об ошибках. Завершающий символ новой строки удаляется из вывода. Код завершения команды может быть интерпретирован согласно правилам для функции C `wait()`.

#### `commands.getoutput(cmd)`

Как и [`getstatusoutput()`](https://python-all.ru/2.7/library/commands.html#commands.getstatusoutput), за исключением того, что код завершения игнорируется, а возвращаемое значение представляет собой строку, содержащую вывод команды.

#### `commands.getstatus(file)`

Возвращает вывод `ls -ld file` в виде строки. Эта функция использует функцию [`getoutput()`](https://python-all.ru/2.7/library/commands.html#commands.getoutput) и правильно экранирует обратные слеши и знаки доллара в аргументе.

Устарело с версии 2.6: Эта функция неочевидна и бесполезна. Название также вводит в заблуждение при наличии [`getstatusoutput()`](https://python-all.ru/2.7/library/commands.html#commands.getstatusoutput).

Пример:

```python
>>> import commands
>>> commands.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> commands.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: No such file or directory')
>>> commands.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: not found')
>>> commands.getoutput('ls /bin/ls')
'/bin/ls'
>>> commands.getstatus('/bin/ls')
'-rwxr-xr-x  1 root        13352 Oct 14  1994 /bin/ls'
```

> **См. также**
>
> **Модуль [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess)**
>
> Модуль для порождения и управления подпроцессами.
