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

Кажется, что Realtek 8168B имеет проблемы на Debian, Сжимают. Попробуйте их:

16
16.03.2015, 17:41
7 ответов

@ Ancess 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 или другая оболочка, если вы не укажете аргумент оболочки аргумент ключевого слова к функции (то же самое верно для SubProcess.Call ( ) , и вы не должны если нет необходимости, поскольку он налагает опасность безопасности), он напрямую вызывает команду.

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

from plumbum.cmd import sudo, apt, echo, cut

res = sudo[apt["update"]]()
chain = echo["hello"] | cut["-c", "2-"]
chain()
16
27.01.2020, 19:48

Модуль [11777857] модуль предназначен для этого:

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

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

subprocess.check_call(["sudo", "apt", "update"])
7
27.01.2020, 19:48

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

Пример:

bashCommand = "sudo apt update"
output = subprocess.check_output(['bash','-c', bashCommand])
8
27.01.2020, 19:48

usar módulo de subproceso

import subprocess
command = 'sudo apt update'
subprocess.check_call(command.split())
0
27.01.2020, 19:48

Также вы можете использовать 'os.popen'.

Пример:

import os

command = os.popen('ls -al')
print(command.read())
print(command.close())

Выход:

total 16
drwxr-xr-x 2 root root 4096 ago 13 21:53.
drwxr-xr-x 4 root root 4096 ago 13 01:50..
-rw-r--r-- 1 root root 1278 ago 13 21:12 bot.py
-rw-r--r-- 1 root root   77 ago 13 21:53 test.py

None
3
27.01.2020, 19:48

Для Python 3.5 и выше вы можете использовать:

import subprocess

try:        
    result = subprocess.run("sudo apt update", check=True, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except subprocess.CalledProcessError as err:
    raise Exception(str(err.stderr.decode("utf-8")))
except Exception as err:
    raise Exception(err)
else:
    return result.stdout.decode("utf-8")
1
14.04.2020, 05:03
import os

os.system("sudo apt update")
0
19.06.2020, 22:51

Теги

Похожие вопросы