如何优雅的在php中调用python程序

需求:通过form表单把值传到python程序中,并把制行结果返回给前端
在这里插入图片描述

听到这个你肯定会想,需求中根本就没有用到php,那为什么还要用php呢,原因是当前主流的后端语言是java和php,虽然python也有web框架如Django,当然如果你会django的话肯定就不会搜索这个问题了。

exec

PHP中有一个函数可以运行第三方的脚本:exec(),来看看exec的函数结构:

string exec ( string KaTeX parse error: Expected 'EOF', got '&' at position 18: …mmand [, array &̲output [, int &$return_var ]] )

参数解释(来自PHP手册)

command

要执行的命令。

output

如果提供了 output 参数, 那么会用命令执行的输出填充此数组, 每行输出填充数组中的一个元素。 数组中的数据不包含行尾的空白字符,例如 \n 字符。 请注意,如果数组中已经包含了部分元素, exec() 函数会在数组末尾追加内容。如果你不想在数组末尾进行追加, 请在传入 exec() 函数之前 对数组使用 unset() 函数进行重置。

return_var

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

返回值:

命令执行结果的最后一行内容。 如果你需要获取未经处理的全部输出数据, 请使用 passthru() 函数。

如果想要获取命令的输出内容, 请确保使用 output 参数。

PHP带参数制行python程序

只需要在python.py文件后面空格加上参数即可:

exec("python test.py {$underGraduate} 
{$achievement} {$language} {$GREGMAT} 
{$Recommender} {$background}
 {$postGraduate}" ,$outputs);

python接收参数

import sys
for data in sys.argv:
	print(data + 'dangdang')

在python中我们把接收到的参数后面加个dangdang,再传回去验证一下是否已经被python修改。

案例代码:

<?php
if (isset($_POST['dosub'])){
    $underGraduate = $_POST['underGraduate'];
    $achievement = $_POST['achievement'];
    $language = $_POST['language'];
    $GREGMAT = $_POST['GREGMAT'];
    $Recommender = $_POST['Recommender'];
    $background = $_POST['background'];
    $postGraduate = $_POST['postGraduate'];

    $cmd="python test.py";
    unset($outputs);
    exec("python test.py {$underGraduate} {$achievement} {$language} {$GREGMAT} {$Recommender} {$background} {$postGraduate}" ,$outputs);
    unset($outputs[0]);
    foreach($outputs as $out){
        echo $out."<br>";
    }
}
?>
<form action="" method="post">
    <input type="text" name="underGraduate">
    <input type="text" name="achievement">
    <input type="text" name="language">
    <input type="text" name="GREGMAT">
    <input type="text" name="Recommender">
    <input type="text" name="background">
    <input type="text" name="postGraduate">
    <input type="submit" name="dosub">
</form>

执行结果

都传一个111的参数:
在这里插入图片描述
提交后:
在这里插入图片描述
可以看到php打印出来的值已经发生了变化,所以成功执行了py程序!

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值