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

标签 php python

我正在从我的 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/

相关文章:

javascript - 将数据变量从 PHP 传递到 jquery ui 对话框

python - findall() 函数中使用 beautiful soup 的 2+ 正则表达式参数

java - 如果涉及方法内变量的范围,python 与 java 有何不同?

python - Pandas :比较 2 个数据帧而不进行迭代

php - 将 php 数据传递给具体化模式

javascript - mysql 数据库日期时间格式的 JQuery 日期和时间

python - 在 Cassandra 中只保留最新的 N 行

python - 如何使用python从以列中的数字开头的字符串中提取数字

php - OOP概念理解

php - 位于 div 内的 <p> 标记中的图像大于 div 大小