как выполнить команду bash в скрипте python

Как я могу запустить команду bash с несколькими аргументами (например, « sudo apt update ») из сценария python?

3 Solutions collect form web for “как выполнить команду bash в скрипте python”

Ответ @ milne работает, но subprocess.call() дает вам небольшую обратную связь.

Я предпочитаю использовать subprocess.check_output() чтобы вы могли проанализировать, что было напечатано в stdout:

  import subprocess res = subprocess.check_output(["sudo", "apt", "update"]) for line in res.splitlines(): # process the output line by line 

check_output выдает ошибку при выходе на нуль вызываемой команды

Обратите внимание, что это не вызывает bash или другую оболочку, если вы не указываете аргумент ключевого слова shell для функции (то же самое верно для subprocess.call() , и вы не должны, если это не необходимо, поскольку оно накладывает защиту опасность), он непосредственно вызывает команду.

Если вы обнаружите, что выполняете множество (разных) командных команд из Python, вы можете посмотреть на plumbum . С этим вы можете сделать (IMO) более читаемым:

 from plumbum.cmd import sudo, apt res = sudo[apt["update"]]() 

Модуль подпроцесса предназначен для этого:

 import subprocess subprocess.call(["sudo", "apt", "update"]) 

Если вы хотите, чтобы сценарий завершился, если команда завершилась неудачей, вы можете использовать check_call() вместо того, чтобы самостоятельно разбор кода возврата:

 subprocess.check_call(["sudo", "apt", "update"]) 

Возможно, вы используете bash как программу, с параметром -c для выполнения команд:

Пример:

 bashCommand = "sudo apt update" output = subprocess.check_output(['bash','-c', bashCommand]) 
  • Как создать выход в скрипт python, запущенный при загрузке?
  • Запуск Deamon с участием GPIO на Pi
  • Ошибка libGL: сопоставление fbConfigs или визуальных изображений не найдено по ssh
  • Как указать путь python для pip?
  • Clone Python из одной Linux-машины в другую
  • Как установить mailman, когда ему нужна более старая версия Python?
  • настроить python3-tk для установленного вручную python 3.4 debian wheezy
  • Параллельные скрипты Python на удаленной машине
  • 'netcat -e' не ретранслирует stdout
  • Как использовать tty как звуковое устройство для pjsua?
  • Разрешение запрещено в скриптовой тюрьме chroot
  • Linux и Unix - лучшая ОС в мире.