PHP程序中怎么运行Python脚本

一、exec()

执行一个外部程序

exec ( string $command [, array &$output [, int &$return_var ]] ) : string

参数说明:

command:要执行的命令,其中包括三个子串,名列前茅个子串为使用的当前系统的解释器,第二个子串为所要执行脚本的位置,第三个子串为所需传入的参数不限个数,中间用空格分隔,注意格式。子串间使用空格分割。

output:如果提供了 output 参数,那么会用命令执行的输出填充此数组,每行输出填充数组中的一个元素。(说明:output 中存放的并非python中return的值,并且所有return的值都不会进行保存,output 中存放的是python脚本中输出的值,即为 print() 函数所输出的所有数据)

return_var:如果同时提供 output 和 return_var 参数,命令执行后的返回状态会被写入到此变量。

1、直接运行

index.php

<?php$re = exec('python ceshi.py', $out);// $re = iconv('gbk', 'utf-8', $re);var_dump($out);echo '<br/>';var_dump($re);

ceshi.py

def send():    data = '1,2,3,4,5'    print(data)if __name__ == '__main__':    send()

(重要说明:如果Python脚本返回的数据中含有中文,需要使用 iconv(‘gbk’, ‘utf-8’, $re); 进行转义)

PHP程序中怎么运行Python脚本

2、传参,接收返回数据

inde.php

$canshu1 = '这是PHP传过来的参数';$canshu2 = date('Y-m-d');$re = exec("python ceshi.py $canshu1 $canshu2");$re = iconv('gbk', 'utf-8', $re);var_dump($re);

test.py

import sysdef send():    # a1 = sys.argv[1]    # a2 = sys.argv[2]    re = sys.argv[1:]    data = '1,2,3,4,5,' + ','.join(re) # 转字符串    print(data)if __name__ == '__main__':    send()

导入sys包,使用sys.argv[]数组获取传入参数,名列前茅个传入参数为sys.argv[1],第二个为sys.argv[2]以此类推,不要使用argv[0]

PHP程序中怎么运行Python脚本

接收返回 json 数据:

import sysimport jsondef send():    dict = {'id':111, 'title':'测试title'}    dict['data'] = sys.argv[1:]    jsonArr = json.dumps(dict, ensure_ascii=False)    print(jsonArr)if __name__ == '__main__':    send()

(涉及到中文字符的时候,需要指定ensure_ascii=False)

PHP程序中怎么运行Python脚本

二、system()

执行外部程序,并且显示输出

system ( string $command [, int &$return_var ] ) : string

同 C 版本的 system() 函数一样,本函数执行 command 参数所指定的命令,并且输出执行结果。

如果 PHP 运行在服务器模块中, system() 函数还会尝试在每行输出完毕之后,自动刷新 web 服务器的输出缓存。

如果要获取一个命令未经任何处理的 原始输出,请使用 passthru() 函数。

index.php

<?phpecho '这是运行直接输出:';$re = system('python ceshi.py');// $re = iconv('gbk', 'utf-8', $re);echo '<br/>';echo '这是赋值输出:';var_dump($re);

这里使用最初版本的 test.py,输出效果如下:

PHP程序中怎么运行Python脚本

三、passthru()

执行外部程序,并且显示输出

passthru ( string $command [, int &$return_var ] ) : void

同 exec() 函数类似, passthru() 函数 也是用来执行外部命令(command)的。当所执行的 Unix 命令输出二进制数据,并且需要直接传送到浏览器的时候,需要用此函数来替代 exec() 或 system() 函数。常用来执行诸如 pbmplus 之类的可以直接输出图像流的命令。通过设置 Content-type 为 image/gif,然后调用 pbmplus 程序输出 gif 文件,就可以从 PHP 脚本中直接输出图像到浏览器。

index.php

echo '这是运行直接输出:';$re = passthru('python ceshi.py');// $re = iconv('gbk', 'utf-8', $re);echo '<br/>';echo '这是赋值输出:';var_dump($re);

这里使用最初版本的 test.py,输出效果如下:

PHP程序中怎么运行Python脚本

“PHP程序中怎么运行Python脚本”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

文章标题:PHP程序中怎么运行Python脚本,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/24303

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月10日 下午11:51
下一篇 2022年9月10日

相关推荐

  • 如何进行crawlergo、rad、burpsuite和awvs爬虫的对比

    前言 最近在写代码,涉及了web爬取链接的方面,在百度过程中了解到了这篇文章:superSpider,突然就好奇平时常见的爬虫 工具和扫描器里的爬虫模块能力如何,所以来测试下。 主要测试1个自己手写的瞎眼爬虫,还有crawlergo、rad、burpsuite pro v202012、awvs 20…

    2022年9月26日
    94500
  • 发现“小火车托马斯”智能玩具APP聊天应用漏洞的示例分析

    漏洞发现背景 ToyTalk是一家由皮克斯前高管创建的人工智能玩具初创公司,它们设计的智能玩具具备视觉跟踪、语音识别和网络扩展功能,能让儿童通过APP与玩具之间进行语音交流和行为反应识别,激发儿童与虚拟人物的谈话能力,更好地实现与玩具之间的互动乐趣。 ToyTalk于2015年7月推出了一款名为“托…

    2022年9月16日
    36300
  • mysql如何统计查询结果

    在mysql中,可以使用COUNT()函数来统计查询结果;该函数用于统计查询结果的行数,返回表中符合特定条件的记录行数。COUNT()函数有三种语法:1、“COUNT(*)”,返回总行数,包含NULL和非NULL值的行;2、“COUNT(字段名)”,返回不包含NULL值的行数,会忽略空值行;3、“C…

    2022年9月22日
    1.2K00
  • dch驱动指的是什么

    dch驱动是“声明性组件化硬件支持的应用程序”的意思;dch是“Declarative Componentized Hardware supported apps”的缩写,该驱动程序则是在基于通用UWP的Windows10版本上安装和运行的驱动程序包。 本教程操作环境:windows10系统、DEL…

    2022年9月13日
    1.1K00
  • windows ventoy怎么使用

    ventoy使用教程: 1、首先我们下载ventoy。 2、下载完成会得到一个压缩包,将它解压出来。 3、解压完成后,双击运行“ventoy2disk.exe”打开它。 4、在上方选择我们想要制作成系统盘的u盘。(如果没有说明没插u盘) 5、接着点击图示位置修改配置版本。 (基本新电脑和系统都设置g…

    2022年8月27日
    1.0K00
  • program files可不可以删除

    “program files”不可以删除;“program files”文件夹是windows系统的程序文件夹,在系统安装完成后就已经生成,该文件夹用于存放已经安装的应用程序,位于C盘根目录,如果删除可能会导致系统运行的不稳定,导致操作系统的崩溃。 本教程操作环境:windows10系统、DELL …

    2022年9月10日
    93000
  • echarts如何改变图表的颜色

    echarts改变图表颜色的方法 1、 打开编辑器新建study.html,并在头部引入echarts插件 2、在body区域新建一个div,并给div设置宽和高,用来生成柱状图 3、在script标签中加入柱状图相关代码 4、通过设置itemStyle下的color属性来改变柱状图颜色 5、完成之…

    2022年9月26日
    80600
  • 项目管理是做什么

    项目管理是做什么?根这里我们将根据官方对项目管理的解释,以及项目经理的4大工作职责进行介绍。 一、项目管理具体是做什么 官方解释,项目管理其实是一个管理学科的分支 ,指在项目活动中运用专门的知识、技能、工具和方法,使项目能够在有限资源限定条件下,实现或超过设定的需求和期望。 比如你准备的一场考试就是…

    2022年3月19日
    29400
  • 如何用rank函数排名不重复

    用rank函数排名不重复的方法: 1、首先打开表格,进入你的表格。 2、然后在单元格中输入公式:=RANK(H2,H2:H47,0)可以看到名列前茅行43的排行。 3、然后将书本放在单元格右下角,然后向下拉。 4、最后就可以看到很多的重复排名了,但是没有第二和第三。 5、如果需要不重复就需要在ran…

    2022年8月30日
    3.2K00
  • 电脑蓝屏代码0xc000000d如何修复

    蓝屏代码0xc000000d修复方法: 问题分析: 1、首先,如果我们突然断点关机或关机前出现卡顿,都可能造成磁盘受损,引发问题。 2、当我们使用电脑,比如:玩游戏、看视频、操作大的东西、使用电脑时间长或着是下载了不合适的东西都会出现这个问题。 PS:如果是这个问题引起的,只要注意自己的电脑不卡机、…

    2022年9月16日
    89800
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部