Использование исходной команды из скрипта Python - PullRequest
0 голосов
/ 09 декабря 2011

Я пытался вызвать исходную команду в Unix из скрипта Python.Я пытался сделать это с помощью подпроцесса. Откройте передачу среды os в него.

Ниже приведена моя функция для выполнения задачи по выполнению команды:

def run_command(command, tst_env):
    print tst_env
    try:
       p = subprocess.Popen(command, env=tst_env, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
       stout, er = p.communicate()
       print stout, er
       ret = p.wait()
    except Exception, e:
       print "Exception: ", e
    else :
        if ret:
          print command, "failed", ret
          return
        else:
          print command, "succeeded", ret
    return p

tst_envявляется объектом типа os.environ.

run_command(source script.sh, os.environ) говорит, что это успешно.

Но я не могу получить доступ к функциям в сценарии.

Случайпримерно так:

script.sh следует:

function task_test() {
   echo "Test function called"
}

source script.sh

task_test вызовет функцию в сценарии оболочки.

Но я не могу вызватьфункции в скрипте оболочки из python.

Надеюсь, я ясно.

1 Ответ

1 голос
/ 10 декабря 2011

subprocess есть для выполнения вещей. Это не дает вам мост между функциями оболочки и Python. Вы не можете «загрузить» файл оболочки, а затем обработать его как объект Python, который вы можете вызвать. Вы можете просто выполнить содержимое скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...