出于某种原因,我必须运行一个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