我正在从我的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:似乎只传递了“绿色”一词。 当我传递带有空格的字符串时,仅传递第一个单词。 这是没有意义的,因为我被','炸开了,当我回显$output1它向我显示了包含空格的正确字符串。

===============>>#1 票数:1 已采纳

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

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]时,它只会得到“绿色”,因为“天”将是“第二”参数。

因此,只需在Python中遍历sys.argv并连接以下字符串即可:

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

  ask by Thiago Balbo translate from so

未解决问题?本站智能推荐: