出于某种原因,我必须运行一个PHP脚本来从Python获取图像。因为php脚本非常大并且不是我的,所以我需要花费几天时间找出所使用的算法并将其转换为python。
我很想知道是否有任何方法可以在python中运行带有少量参数的PHP脚本,这些参数会返回一个图像。
答案 0 :(得分:38)
示例代码:
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()
答案 1 :(得分:13)
您只需从Python执行php可执行文件即可。
使用subprocess.run
编辑:Python 3.5及更高版本的示例:
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
答案 2 :(得分:6)
您可以使用php.py。这将允许您在python中执行php代码,就像在此示例中(取自here):
php = PHP("require '../code/private/common.php';")
code = """for ($i = 1; $i <= 10; $i++) { echo "$i\n"; }"""
print php.get_raw(code)
答案 3 :(得分:3)
围绕PHP脚本创建一个包装器,其中包含:
所以你可以通过一个简单的HTTP请求来引用这个服务(PHP脚本),从任何地方,你可以用浏览器测试它,使用Python prg,你需要只需下载图像通常的方式。
另外,如果你有一个这样独立的子系统,不要用不同的语言/技术来实现它。它有几个优点,例如您可以在其他主机上安装该服务。
推荐阅读:维基百科上的Service-Oriented Architecture。
答案 4 :(得分:3)
如果您可以从命令行本地运行PHP脚本,subprocess.check_output()将允许您使用PHP并捕获返回值。
如果您通过套接字访问PHP,则可以使用urllib.urlopen()或urllib.urlretrieve()来下载资源。