commands.md
1> **Источник:** https://python-all.ru/2.7/library/commands.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 36.16. [`commands`](https://python-all.ru/2.7/library/commands.html#module-commands) – Утилиты для запуска команд89Устарело с версии 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) вместо него.1011Модуль [`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), которые принимают системную команду в виде строки и возвращают любой вывод, сгенерированный командой, и, опционально, код завершения.1213Модуль [`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).1415> **Примечание**16>17> В 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).1819Модуль [`commands`](https://python-all.ru/2.7/library/commands.html#module-commands) определяет следующие функции:2021#### `commands.getstatusoutput(cmd)`2223Выполняет строку *cmd* в оболочке с помощью [`os.popen()`](https://python-all.ru/2.7/library/os.html#os.popen) и возвращает кортеж из двух элементов `(status, output)`. Строка *cmd* на самом деле выполняется как `{ cmd ; } 2>&1`, так что возвращаемый вывод будет содержать вывод или сообщения об ошибках. Завершающий символ новой строки удаляется из вывода. Код завершения команды может быть интерпретирован согласно правилам для функции C `wait()`.2425#### `commands.getoutput(cmd)`2627Как и [`getstatusoutput()`](https://python-all.ru/2.7/library/commands.html#commands.getstatusoutput), за исключением того, что код завершения игнорируется, а возвращаемое значение представляет собой строку, содержащую вывод команды.2829#### `commands.getstatus(file)`3031Возвращает вывод `ls -ld file` в виде строки. Эта функция использует функцию [`getoutput()`](https://python-all.ru/2.7/library/commands.html#commands.getoutput) и правильно экранирует обратные слеши и знаки доллара в аргументе.3233Устарело с версии 2.6: Эта функция неочевидна и бесполезна. Название также вводит в заблуждение при наличии [`getstatusoutput()`](https://python-all.ru/2.7/library/commands.html#commands.getstatusoutput).3435Пример:3637```python38>>> import commands39>>> commands.getstatusoutput('ls /bin/ls')40(0, '/bin/ls')41>>> commands.getstatusoutput('cat /bin/junk')42(256, 'cat: /bin/junk: No such file or directory')43>>> commands.getstatusoutput('/bin/junk')44(256, 'sh: /bin/junk: not found')45>>> commands.getoutput('ls /bin/ls')46'/bin/ls'47>>> commands.getstatus('/bin/ls')48'-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls'49```5051> **См. также**52>53> **Модуль [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess)**54>55> Модуль для порождения и управления подпроцессами.56