TGViewer
📚Python Books 📚Python Books @pythonlbooks · 33.4K subscribers
Post #1665 4.18K
🐍 Как правильно запускать внешние команды из Python

Для большинства задач не нужны os.system() или низкоуровневый Popen. Достаточно subprocess.run() - он запускает программу, передаёт аргументы, возвращает код завершения и позволяет получить вывод.


import subprocess

result = subprocess.run(
["git", "status", "--short"],
capture_output=True,
text=True,
check=True,
timeout=10,
)

print(result.stdout)


Что здесь происходит:

- capture_output=True сохраняет stdout и stderr
- text=True возвращает строки вместо bytes
- check=True выбрасывает CalledProcessError, если команда завершилась с ошибкой
- timeout=10 не позволяет процессу зависнуть навсегда

Ошибки лучше обрабатывать явно:


import subprocess

try:
result = subprocess.run(
["git", "status", "--short"],
capture_output=True,
text=True,
check=True,
timeout=10,
)
except subprocess.TimeoutExpired:
print("Команда выполнялась слишком долго")
except subprocess.CalledProcessError as error:
print(error.stderr)
else:
print(result.stdout)


Передавайте команду списком аргументов. shell=True нужен редко и может создать уязвимость к внедрению команд, особенно если строка содержит пользовательские данные.

subprocess.run() - простой и надёжный мост между Python и системными утилитами, Git, компиляторами, CLI-инструментами и другими программами.

Подробнее:
https://pythonmorsels.com/running-subprocesses-in-python/
More from @pythonlbooks
  1. Sep 17, 2026📘 Elementary Probability for Applications - бесплатная книга по теории вероятностей 163 с…
  2. Sep 11, 2026🔥 Хак в Django: Meta.indexes можно использовать для собственных миграций Оказывается, mod…
  3. Sep 5, 2026📚 Бесплатный 17-страничный PDF по Hidden Markov Models Короткий и плотный разбор HMM от S…
  4. Aug 31, 2026MIT бесплатно выложил 920-страничный учебник Mathematics for Computer Science. Это большой…
  5. Aug 31, 2026🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы. Ste…
  6. Aug 27, 2026🔥 Face Anything - восстановление 4D-лица из любой последовательности изображений На ECCV…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →