gpt4 book ai didi

php - 从 PHP 到 Python 发送/接收字符串

转载 作者:太空宇宙 更新时间:2023-11-03 18:26:01 25 4
gpt4 key购买 nike

我正在从我的 PHP 代码运行两个 Python 脚本。要将值发送到我正在执行的脚本:

$output1 = shell_exec('python /path/to/my/script1.py '.$name);
$output1 = explode(',', $output1);

然后我正在做:

$output2 = shell_exec('python /path/to/my/script2.py '.$output1[0]);
$output2 = explode(',', $output2);

$output1 正确接收来自 python 脚本的返回值,但 script2.py 返回了错误的值。直接在 script2.py 上手动设置 $output1[0] 的值会给我一个正确的值,因此问题不在于脚本。

我已经做了一个 echo var_dump($output1); 并且它给了我一个正确的 $output1[0],所以问题既不是来自 $output1.

有什么线索吗?

Edit1:$output1[0] 的值是一个带有空格的字符串(“Green Day”)。

Edit2:似乎只传递了“Green”这个词。当我传递带有空格的字符串时,仅传递第一个单词。这是没有意义的,因为我用 ',' 进行爆炸,当我回显 $output1 时,它会向我显示包含空格的正确字符串。

最佳答案

我设法解决了这个问题,所以我会在这里回答,以防有人遇到同样的问题。

函数 shell_exec 的工作原理如下:

$var = shell_exec('python path/to/your/python/script.py '.$var1.' '.$var2. ...);

您想要传递给 python 脚本的参数必须用空格分隔,这就是 python 解释您发送的多变量的方式。

字符串“Green Day”内部有一个空格,所以就像发送一样

$var = shell_exec('python path/to/your/python/script.py Green Day');

因此,当我在 Python 中执行 sys.argv[1] 时,它只会得到“绿色”,因为“Day”将是“第二个”参数。

因此,只需在 Python 中循环遍历 sys.argv 并连接字符串,如下所示:

string = ''
for word in sys.argv[1:]:
string += word + ' '

关于php - 从 PHP 到 Python 发送/接收字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23190090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com