1:python脚本
#!/usr/bin/python# -- coding: UTF-8 --import sysfrom pydocx import PyDocXreload(sys)sys.setdefaultencoding('utf8')FileName = sys.argv[1] #获取文件名参数ShortName = sys.argv[2] #获取文件名参数html = PyDocX.to_html(FileName) # f = open("/www/wwwroot/micuer.com/pythoncode/runtime/99.txt", 'w') #做事器的全路径# f.write(html)# f.close()print(html)
2:php处理脚本
public function uploadword(){ try { $file = request()->file("file"); // 上传到本地做事器 $savename = \think\facade\Filesystem::disk('upload')->putFile( 'word', $file); $shotrname = time().".txt"; // 短名称 $savename = "/www/wwwroot/micuer.com/data/upload/".$savename; //Request::domain(). $python_file_name = "/www/wwwroot/micuer.com/pythoncode/WordToHtml.py"; //组装命令 $cmd = "python {$python_file_name} ".$savename." {$shotrname} 2>error.txt 2>&1"; $res = exec($cmd,$array, $ret); return json(["code"=>200,"msg"=>"成功","data"=>$savename,"cmd"=>$cmd,"array"=>$array]); } catch (think\exception\ValidateException $e) { return json(["code"=>40000,"msg"=>$e->getMessage()]); } }
上传界面如下:

实现的功能便是利用PHP的exec函数,调用py脚本,将html代码返回给前台做事器。
返回数据如下
实在,再处理这个方案中,也碰着了很多问题,比如在命令行下只能成功,但是exec函数实行不堪利等等。参考了资料:https://my.oschina.net/u/4427610/blog/3155816也便是
exec("python python_test.py 2>error.txt 2>&1", $array, $ret);
在bash中0,1,2三个数字分代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即标准输入(一样平常是键盘),标准输出(一样平常是显示屏,准确的说是用户终端掌握台),标准缺点(出错信息输出)。也可以通过以下办法将标准缺点重定向到标准输出保存到$array中:打印之后,创造是没有权限调用。于是就直接改为输出了,也便是 py的print(html)函数。
把稳几点:1:实行权限问题2:exec(“python python_test.py 2>error.txt 2>&1”, $array, $ret); 中 $array就接管到了 print(html)的值3:各个脚本只管即便利用全路径