我写了一个简单的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"文件。
知道出了什么问题吗?
答案 0 :(得分:0)
通常它与用户权限或路径错误有关。您可以将.sh脚本替换为一些简单的脚本,例如“echo”,我正在运行“”并查看是否可以访问和执行它。如果它是在linux下,我希望你通过chmod给你sh脚本的执行权。
答案 1 :(得分:0)
您可以通过导入os模块来运行sh文件:
import os
os.system('sh filename.sh')