出於某種原因,我必須運行一個php腳本來從Python獲取圖像。由於php腳本非常大,而且它不是我的,所以需要花幾天時間才能找到正確的算法並將其轉換爲python。在Python中執行php代碼
我不知道是否有任何方法可以運行php腳本,只有少數參數,它返回一個圖像,在python中。
出於某種原因,我必須運行一個php腳本來從Python獲取圖像。由於php腳本非常大,而且它不是我的,所以需要花幾天時間才能找到正確的算法並將其轉換爲python。在Python中執行php代碼
我不知道是否有任何方法可以運行php腳本,只有少數參數,它返回一個圖像,在python中。
示例代碼:
import subprocess
# if the script don't need output.
subprocess.call("php /path/to/your/script.php")
# if you want output
proc = subprocess.Popen("php /path/to/your/script.php", shell=True, stdout=subprocess.PIPE)
script_response = proc.stdout.read()
您可以簡單地從Python執行php可執行文件。
編輯:例如爲Python 3.5和更高的使用subprocess.run
:
import subprocess
result = subprocess.run(
['php', 'image.php'], # program and arguments
stdout=subprocess.PIPE, # capture stdout
check=True # raise exception if program fails
)
print(result.stdout) # result.stdout contains a byte-string
讓周圍的PHP腳本,它的包裝:
所以,你可以參考這個服務(PHP腳本)用一個簡單的HTTP請求,從任何地方,你可以用瀏覽器進行測試,在Python PRG使用,你只需要下載圖像的常用方法。
另外,如果你有這樣一個獨立的子系統,不要不好意思用不同的語言/技術來實現它。它有幾個優點,例如您可以在不同的主機上安裝該服務。
推薦閱讀:Service-Oriented Architecture基於維基百科。
這是一個非常不錯的主意!我想它可以解決我的問題。非常感謝。 – jiahao
如果您可以從命令行本地運行PHP腳本,則subprocess.check_output()將讓您可以使用PHP並捕獲返回值。
如果您通過套接字訪問PHP,則可以使用urllib.urlopen()或urllib.urlretrieve()來下拉資源。
這是從http://mail.python.org/pipermail/tutor/2009-October/071973.html – Alvin
粘貼的代碼,它是不正確的。第一次調用不適用於POSIX系統。改用'subprocess.call([「php」,「/path/to/your/script.php」])。使用'script_response = subprocess.check_output([「php」,「/path/to/your/script.php」])'而不是第二個例子。 – jfs
如果參數'shell'設置爲'True',那麼使用字符串而不是列表是好的 – Valen