2010-04-28 24 views
8

我正在從PHP調用一個python腳本。從PHP調用Python並獲取返回代碼

python程序必須根據傳遞給它的參數返回一些值。

下面是一個簡單的Python程序,它會給你什麼,我目前在做一個基本思想:

#!/usr/bin/python 
import sys 

#get the arguments passed 
argList = sys.argv 

#Not enough arguments. Exit with a value of 1. 
if len(argList) < 3: 
    #Return with a value of 1. 
    sys.exit(1) 

arg1 = argList[1] 
arg2 = argList[2] 

#Check arguments. Exit with the appropriate value. 
if len(arg1) > 255: 
    #Exit with a value of 4. 
    sys.exit(4) 
if len(arg2) < 2: 
    #Exit with a value of 8. 
    sys.exit(8) 

#Do further coding using the arguments------ 

#If program works successfully, exit with a value of 0 

正如你可以從上面的代碼看,我的基本目的是

  1. python程序根據參數返回一些值(0,1,4,8等)。
  2. 然後調用PHP程序來訪問這些返回的值並執行相應的操作。

目前我已經使用「sys.exit(n)」,爲此目的。

我是否正確使用sys.exit,還是需要使用別的東西?

還有什麼方法存在於PHP中,以便我可以從python訪問返回代碼?

很抱歉的長期問題,但希望它會在你瞭解我的困境

由於一噸

回答

7

在PHP幫助,您可以執行命令,並獲得使用exec返回代碼。

manualexec說,第三個參數是在返回代碼將被存儲在可變的,例如

exec('python blibble.py', $output, $ret_code); 

$ret_code將成爲外殼返回代碼,並$output是的線的陣列文本打印到std。輸出。

這似乎確實適用於您所描述的返回代碼,即0表示成功,而> 0代表各種類型的錯誤。

+0

非常感謝PHP函數(exec)以獲取返回值。 但是,我還需要在sys.exit(n)上進行確認。 將值(n)返回到「$ ret_code」?或者我應該使用另一種方式返回並退出python程序? 再次感謝 – seaboy 2010-04-28 03:35:55

+0

只需確認sys.exit(n)將值返回給shell。 在linux中,它可以通過「echo $?」輸出。在Windows中:「echo%ERRORLEVEL%」。無法在「$ ret_code」中確認它的值,但它解決了我的問題的python部分。再次感謝 – seaboy 2010-04-28 05:37:50

+0

是的,應該通過PHP exec命令將sys.exit值存儲在返回代碼參數中。我不知道如何調用Python,但是我通過這種方法調用Java和其他命令來使用它。 – JAL 2010-04-28 16:18:47