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

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

  • Как узнать, какой компилятор используется для компиляции программ Python?
  • Если я хочу создать графический интерфейс, который отображает точно те же данные, что и команда TOP в LINUX, откуда я получу данные?
  • PIP сохраняет день на Fedora 25 для No module с именем «PyQt5.QtWebEngineWidgets» ошибка..WHY?
  • Можно ли как-то сказать, переносится ли ноутбук в сценарий bash или python?
  • Как запустить python SimpleHTTPServer на порту 80?
  • Запуск скрипта python 200 000 раз параллельно с использованием bash
  • Записать исходный файл Python в файл немедленно
  • Библиотека библиотеки 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]) 
    Interesting Posts

    Несоответствие модуля ядра 4.9

    tcpdump сообщений SCCP или GSM MAP

    Поддержка драйверов Sound Blaster Z / Zx на Linux

    Преобразование отформатированных дат в секундах с эпохи

    iptables маршрутизирует маркированные пакеты с маршрутизатора на ПК и маршрутизирует их обратно на маршрутизатор

    Как запустить несколько «последовательных» процессов под управлением, учитывая доступные процессоры?

    Построение графика в gnuplot

    Постфикс отклоняет все

    Можем ли мы сделать grep быстрее, индексируя слова в файлах?

    Визовый режим Vim – есть ли способ изменить цвет фона только в визуальном режиме?

    Ошибка при запуске TMUX под CYGWIN

    Как настроить apache с suPHP и VirtualHosts, чтобы избежать проблемы с DocumentRoot?

    Как перенаправить стандартный ввод инструкции `while` в файл?

    Не удается ssh после добавления пользователя в группу докеров и перезагрузки

    / var имеет большую часть пространства на диске. Нужно / иметь большую часть

    Linux и Unix - лучшая ОС в мире.