我建立在Django的應用程序,並希望運行我已經早些時候以.php腳本。我需要能夠給.php文件一個字符串並捕獲返回的輸出。有沒有人有一個想法如何做到這一點?我可以做出某種類型的http請求並獲得響應嗎?調用.PHP一個Django/Python的內提交
p.s.我已經嘗試過的PHP文件轉換爲Python腳本,但我無法得到它的工作..
我建立在Django的應用程序,並希望運行我已經早些時候以.php腳本。我需要能夠給.php文件一個字符串並捕獲返回的輸出。有沒有人有一個想法如何做到這一點?我可以做出某種類型的http請求並獲得響應嗎?調用.PHP一個Django/Python的內提交
p.s.我已經嘗試過的PHP文件轉換爲Python腳本,但我無法得到它的工作..
試試這個,我發現它here
import subprocess
#simple caller, disguard output
subprocess.call("php /path/to/my/old/script.php")
# if you want output
proc = subprocess.Popen("php /path/to/my/script.php", shell=True,
stdout=subprocess.PIPE)
script_response = proc.stdout.read()
謝謝,但我怎麼能夠用這種方法插入輸入?我必須輸入一個字符串,在php文件中捕獲它,然後在python腳本中再次捕獲輸出。任何想法? – Javaaaa 2011-05-30 13:41:54
@Javaaaa'proc等於subprocess.Popen( 「PHP /path/to/my/script.php?myinput=whateverhere」,殼=真, 標準輸出= subprocess.PIPE)'你試過了嗎? – afarazit 2011-05-30 14:24:44
我在Django中使用Popen,但得到的錯誤如下「Errno 2]沒有這樣的文件或目錄」異常位置:\t /usr/lib/python2.7/subprocess.py在_execute_child,行1259年 – Mohini 2015-05-05 10:49:12
如果是通過網絡提供服務的PHP文件服務器(我假設,從你的HTPP請求的問題)做這樣的事情:
In [1]: import urllib2
In [2]: resp = urllib2.urlopen('http://www.starenka.net/ip')
In [3]: resp.read()
Out[3]: 'ip: 62.245.xx.xx\nlocal ip: 62.245.xx.xx\nhostname: ip-62-245-xx-xx.net.upcbroadband.cz\n'
In [4]: resp.info()
Out[4]: <httplib.HTTPMessage instance at 0x9f8720c>
謝謝,但如何我可以用這種方法插入一個輸入嗎?我必須輸入一個字符串,在php文件中捕獲它,然後在python腳本中再次捕獲輸出。任何想法? - Javaaaa 0秒前編輯 – Javaaaa 2011-05-30 13:42:01
我懷疑,這是不可能的PHP腳本轉換到Python – GWW 2011-05-30 00:31:01
沒有說這是不可能的,但我不能。所以我認爲只需調用php文件會更容易。 – Javaaaa 2011-05-30 00:36:13