Как обрабатывать возвращаемое значение функции? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть функция вызова подпроцесса, которая мне нужна для правильной обработки возвращаемого значения. Например, я пытался использовать try / кроме, но не совсем уверен, что это правильный подход или есть какой-то лучший способ обработки возвращаемого значения. Сценарий bash (pair. sh) используется для сопряжения Bluetooth. В случае сбоя сопряжения пара. sh возвращаемая пара завершается неудачно, и эта функция должна обрабатывать возвращаемое значение в этой точке.

def unpair(bd_addr):
    try:
        subprocess.call(
        "timeout 10 " + test.sh + " " + bd_addr,
        shell=True
        )
    except:
        print "test script fails to run"**

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Если вы хотите обработать код возврата из сценария оболочки, вы можете использовать возвращаемое значение из subprocess.call, что-то вроде этого:

def unpair(bd_addr):
    returncode = subprocess.call(
    "timeout 10 " + "test.sh" + " " + bd_addr,
    shell=True
    )
    if returncode != 0:
        print "test script fails to run"
0 голосов
/ 16 апреля 2020

Попробуйте это (python3 +):

from subprocess import run, CalledProcessError

def unpair(bd_addr): 
# if your script called test.sh, use:
    try: 
        run("timeout 10 test.sh {}".format(bd_addr), shell=True, check=True) 
    except CalledProcessError as ex: 
        print("test script fails to run. Return code: {}".format(ex.returncode))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...