我从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
返回错误的值。直接在$output1[0]
上手动设置script2.py
的值会给我一个正确的值,因此问题不在于脚本。
我已经做了echo var_dump($output1);
并且它给了我一个正确的$output1[0]
,所以问题不在于来自$output1
的价值。
任何线索?
Edit1:$output1[0]
的值是一个带有空格的字符串(" Green Day")。
Edit2:似乎只传递了#34; Green"这个词。当我传递一个有空格的字符串时,只传递第一个单词。这是没有意义的,因为我正在爆炸,','当我回显$output1
时,它会显示包含空格的正确字符串。
答案 0 :(得分:1)
我设法解决了这个问题所以我会在这里回答,以防有人遇到同样的问题。
函数shell_exec
的工作原理如下:
$var = shell_exec('python path/to/your/python/script.py '.$var1.' '.$var2. ...);
你想传递给python脚本的参数必须用空格分隔,这就是python如何解释你发送的多变量。
字符串"绿日"其中有一个空白区域,所以就像发送
一样$var = shell_exec('python path/to/your/python/script.py Green Day');
因此,当我在Python中执行sys.argv[1]
时,它只能获得" Green"因为" Day"将是"第二"参数。
所以只需在Python中循环你的sys.argv
并连接这样的字符串:
string = ''
for word in sys.argv[1:]:
string += word + ' '