Python脚本未运行" .sh"文件

时间:2017-03-26 13:16:21

标签: python execute

我写了一个简单的python脚本,应该运行一个" sh"文件执行时。 问题是,脚本运行但它没有启动" .sh"文件。当我执行" .sh"手动使用" puffy"它完成了这项工作,但不是在我使用我的python脚本时。那么,我需要在脚本中进行哪些更改才能使其正常工作?

我将发布以下方法,以便您可以获得更好的主意。我也在使用python 3.3.5,Oracle Linux 6.8。

调用" .sh"的方法文件,我用过Popen。

def runPrestage2Stage(self):
    import time
    time.sleep(60)
    reload(Queries)
    if "FINISHED" in Queries.statusS2S:
        #run batch file
        p = Popen(["sh", "/u01/app/Oracle_ODI_11/oracledi/agent/bin/start_prestage2stage_simple.sh"], stdout=PIPE, stderr=PIPE)
        stdout, stderr = p.communicate()
        print("Prestage2Stage has started")
    elif 'ERROR' in Queries.statusS2S:
        print("Can not start Prestage Converter, please check runtime status of Stage Converter")
    else:
        print("Prestage2Stage Converter cannot be started")

主要方法的一部分,它调用方法runPRestage2Stage。

DailyLoadsAutomation.DailyLoads.runPrestage2Stage(self)
    load_paraprak_prestage = True
    count2 = 0
    while load_paraprak_prestage:
        reload(Queries)
        sleep(300) #waits 300 seconds (5 minutes) and re-checks load status.
        if "FINISHED" in Queries.statusPreStage:
            load_paraprak_prestage = False
        else:
            load_paraprak_prestage = True
            if count2 == 8:
                import sys
                sys.exit()
            else:
                count2 += 1
print("PreStage is finished")

当我运行脚本时,

它将打印" Prestage2Stage已经开始"和" Prestage已完成",正如它应该的那样,但它不会运行" .sh"文件。

知道出了什么问题吗?

2 个答案:

答案 0 :(得分:0)

通常它与用户权限或路径错误有关。您可以将.sh脚本替换为一些简单的脚本,例如“echo”,我正在运行“”并查看是否可以访问和执行它。如果它是在linux下,我希望你通过chmod给你sh脚本的执行权。

答案 1 :(得分:0)

您可以通过导入os模块来运行sh文件:

import os 
os.system('sh filename.sh')