php 调用python 脚本 传入参数 , python 接收参数 ,php接收返回值
一:php调用python脚本 并传入参数,并接收返回值
php调用python脚本可以用 system(),exec()和passthru() 函数,本篇文章主要介绍exec 函数
exec有三个参数,第一个参数为一个字符串,包括三个子串,起一个子串为使用的当前系统的解释器,如果直接写python则默认为系统默认的解释器,也可以指定本地python.exe 的路径。第二个子串为所要执行的python脚本的位置。第三个子串为所需传入的参数不限个数,中间用空格分隔,注意格式。子串间空格分割。
tips:如果使用相对路径指定脚本位置,或者在python脚本中使用了文件的相对路径,都需要改为当前php文件所对应的相对路径。
第二个参数是php接收的python脚本的返回值,注意,此处的$out中存放的并非python中return的值,并且所有return的值都不会进行保存,$out中存放的是python脚本中输出的值,即为print()函数所输出的所有数据,每次print()都会记录为一条字典数据,组合成array数组如下图:
第三个参数为执行情况的状态码,如果执行成功,返回0,否则返回一个非0数
二:python获取php传递参数
导入sys包
使用sys.argv[ ]数组获取传入参数,第一个传入参数为sys.argv[1],第二个为sys.argv[2]以此类推,不要使用argv【0】
tips:如果要获取python脚本的返回值,直接在python脚本中print()出来,$out数组会自动记录,而system()和passthru()在获取返回值上存在一定缺陷。使用数组作为参数,python接收时会将数组变为一个“Arrqy”字符串,所以本文的解决方案为将传入数组写成字符串,在python中重新分割为数组。
在linux上使用php调用python 可能会出现文件写入权限的问题,需要更改文件的读写权限。在linux上调用python脚本时一定要明确指出exec()函数中python 的绝对路径并安装好所有需要的包,否则会报错。
标签:
相关文章
-
无相关信息