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

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

  • Скопируйте и получите файлы с одной машины, которая связана через ssh с другим
  • Почему python все еще работает после удаления?
  • Sublime Text 2 не обнаруживает библиотеку python, если установлен в / opt
  • Запуск скрипта на GPS Fix
  • Как / usr / bin / env знает, какую программу использовать?
  • Установка Anaconda на Chromebook
  • Настройка туннеля SSH в существующем соединении из сценария
  • Где установлены pithos?
  • 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]) 
    Linux и Unix - лучшая ОС в мире.