使用Python脚本中的源命令

时间:2011-12-09 08:55:55

标签: python unix subprocess

我想从python脚本中调用unix中的source命令。我试图通过subprocess.Popen将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将在shell脚本中调用该函数。

但是我无法从python中调用shell脚本中的函数。

希望我很清楚。

1 个答案:

答案 0 :(得分:1)

subprocess用于执行事情。它没有为您提供shell函数和Python之间的桥梁。您无法“加载”shell文件,然后将其视为可以调用的Python对象。您只需执行脚本的内容即可。