从Python中运行PHP脚本 - 将值从Python传递给PHP

时间:2013-03-06 15:43:48

标签: php python image getimagesize

已解决:Solution ---------------------------------------- --------------------------

我想在Python脚本中从PHP标准库中执行函数getimagesize()。该函数必须从Python传递图像路径。

我知道如何在Python中运行php脚本,但我无法弄清楚如何从Python传递参数 - > PHP,然后将结果返回到Python。

以下是我在Python脚本中的内容:

def php_script_runner(script_path):
    p = subprocess.Popen(['php', script_path], stdout=subprocess.PIPE)
    result = p.communicate()[0]
    return result

这是我在PHP文件中的内容(我不知道如何将参数传递给它):

<?php getimagesize() ?>

如何将参数传递给'get_image_size.php'并让它在Python中返回结果以进行进一步处理?

我想进一步为其他自定义PHP函数实现这个想法。这个问题的主要目标不仅是找到图像的大小,而且能够将其用于将来php强化的其他功能。

这样做的主要目的是确定:

  1. 如何用Python调用PHP脚本
  2. 如何从Python
  3. 向Java脚本发送agrument
  4. 如何将PHP脚本的输出解析回Python

3 个答案:

答案 0 :(得分:3)

使用Python图像库,PIL有什么问题?

from PIL import Image
im=Image.open(filepath)
print im.size # (height,width) tuple

调用PHP脚本来获取图像尺寸,这是完全错误的。我真的不能想到PHP比Python做得更好,它可以证明启动两个运行时的实例:)

我的建议:一次坚持使用一种语言,并学习Python的标准库:) 如果你可以用PHP来做这件事,你不应该在Python中做某事。

答案 1 :(得分:2)

如果我在哪里,我将Python结果作为JSON(或可能是XML)对象回显,然后使用PHP脚本重新读取该信息。如果可能的话,我强烈建议将这两种语言分成两个单独的网页,甚至可以让Python通过GET样式查询将数据返回到页面,即API样式。

答案 2 :(得分:2)

解决这个问题: Python:

import subprocess
import json
import sys
import os

def php(script_path, argument):
    p = subprocess.Popen(['php', script_path, argument], stdout=subprocess.PIPE)
    result = p.communicate()[0]
    return result

image_dimensions_json =str(php("get_image_size.php", image_location_relative[1:]))
dic = json.loads(image_dimensions_json)
print str(dic["0"]) + "|" + str(dic["1"])

[1:]的原因是由于某种原因路径中的“/”导致错误。我发现删除它解决了这个问题。

PHP:

<?php

echo(json_encode(getimagesize($argv[1])));

?>

echoprint_r工作。我发现将数组转换为JSON很容易,因为Python在标准库中内置了json解码器。

希望这有助于人们!我计划使用这个conecpt来实现更大的PHP函数。