서브 프로세스를 사용하여 다른 로컬 스크립트를 호출하려고합니다.다른 파이썬 스크립트 main()을 호출하고 STDOUT 결과 얻기
로컬 스크립트는 그 결과를 화면에 인쇄합니다. 지역
:
def main():
"""
main function
controls the method call, the method is decided by TS runner
"""
sParams = ScriptParamHandler()
paramsList = ['TestName'] # ordered list of parameters
paramsDict = sParams.AnalyzeParametersForScript(paramsList)
mainReturn = None
with ProductXXXXX() as testSequence:
testSequence.testFixture.InitDevices()
func = getattr(testSequence, paramsDict['TestName'])
returnVal = func()
print paramsDict['TestName'], "\n", returnVal, "\n"
if __name__ == "__main__":
main()
발신자 스크립트 :
with BasicRunner(testSet, testSetLocation, paramsDict['ProfileName']) as testRunner:
if testRunner.CheckFolderAndFile():
testRunner.GetProfile()
for test in testRunner.testList:
testRunner.logger.Info("Test {} started...".format(test))
testResult = subprocess.call(testRunner.tsPyFile + " " + test, shell=True)
testRunner.logger.Info("Test {} result {}".format(test, testResult))
else:
pass
나는 발신자 스크립트 testResult
로컬 스크립트의 stout
되고 싶어요.
나는 stdout=subprocess.PIPE
과 subprocess.check_output()
을 사용해 보았지만 운이 없다면 어떤 사람들은 나에게 더 나은 방향을 줄 수 있을까?
당신이 testResult.communicate을 (시도 않았다 그러나 여기
check_output()
변형은 그것을 할 수있는 방법을 보여주기 위해입니까? (with stdout = subprocess.PIPE ofcourse) – shshank스크립트가 동일한 파이썬 프로세스 내에서 실행될 때 stdout을 리디렉션 할 수도 있습니다. 하위 스크립트가 외부 서브 프로세스, C 확장 라이브러리 등의 출력과 같이 비 Python 출력을 생성하는 경우에는 더 복잡합니다 (https://gist.github.com/zed/991e006c822740aa6896#file-parent-py). – jfs