[英]Sending/receiving string from PHP to 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:似乎只传递了“绿色”一词。 当我传递带有空格的字符串时,仅传递第一个单词。 这是没有意义的,因为我被','炸开了,当我回显$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]
时,它只会得到“绿色”,因为“天”将是“第二”参数。
因此,只需在Python中遍历sys.argv
并连接以下字符串即可:
string = ''
for word in sys.argv[1:]:
string += word + ' '
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.