【问题标题】:Running a PHP script from within Python - Pass value from Python to PHP从 Python 中运行 PHP 脚本 - 将值从 Python 传递到 PHP
【发布时间】:2013-03-06 15:43:47
【问题描述】:

已解决: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 将 agrument 发送到 PHP 脚本
  3. 如何将 PHP 脚本的输出解析回 Python

【问题讨论】:

标签: php python image getimagesize


【解决方案1】:

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

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

调用 PHP 脚本来获取图像尺寸是完全错误的。我真的想不出 PHP 比 Python 做得更好的任何事情,它证明启动两个运行时的实例是合理的:)

我的建议:一次坚持使用一种语言,并学习 Python 的标准库 :) 如果可以在 PHP 中完成,那么在 Python 中做某​​事应该不会有问题。

【讨论】:

  • 就像我多次说过的,这只是一个垫脚石。我很了解 PIL,我知道标准库和 PIL 不是其中的一部分。我有调用 PHP 的理由。
  • 好吧,您还说没有办法从 Python 获取图像尺寸。这就是我建议 PIL 的原因。很抱歉:)
  • 感谢您的意见!我在最新的编辑中更清楚地说明了这一点。
【解决方案2】:

通过这样做解决: 蟒蛇:

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 函数。

【讨论】:

  • 这对其他功能非常有效,可以轻松修改以解析输出并集成到 php 框架中。
【解决方案3】:

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

【讨论】:

  • 或者只是看看 python 是否有类似的东西(它几乎肯定有),节省了启动 PHP 的开销,只是为了做一些 python 已经可以做的事情。
  • 我没有在网页上运行此脚本。我熟悉 Python,但它没有用于获取图像大小的内置模块。我碰巧知道PHP确实有一个很棒的功能,那为什么不使用它呢? (我还编写了一些其他 PHP 函数,我想将它们合并到 Python 中)
  • @MarcB:很好的答案。我们又见面了!
  • @SensulPanda:从 python 中启动 PHP 只是为了运行一个函数,就像开车 500 英里在你厨房橱柜里已经有的商店买东西一样。
  • @MarcB:我喜欢你的评论!
猜你喜欢
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 2013-11-13
  • 2012-06-11
  • 2018-02-27
  • 1970-01-01
相关资源
最近更新 更多