這種方式原本是用在html檔上,後來發現改.php也能執行,但是發現頁面上的php語法直接顯露出來,想問是不是代表不能使用這種方式..?(若不能,想問還有甚麼方式@@?)
我想達成的是將在php網頁的表單input值傳給python,然後python經過換算後再傳值回php頁面(以上方法已用flask達成,但我主要的頁面是php頁面)
第一次嘗試連接,若有蠢問題先在這抱歉@@
php
<?php
$v = 5; //半徑
$respPy = json_decode(exec("./python/xyz.py -v $v"));
echo %respPy["test"];
?>
python
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument("-v", help="ψ半徑", default="")
resp = {"test":3.14159*pow(float(v),2)} #圓面積
return json.dumps(resp)
謝謝大師回覆,但是出現的錯誤是syntax error, unexpected '%'
可以請教是要加上甚麼套件嗎??
早上直接在這裡打了這篇,沒時間測,剛剛發現一堆錯
改一下
from argparse import ArgumentParser
import json
parser = ArgumentParser()
parser.add_argument("-v",nargs=1, help="ψ半徑",type=float, default=0.0)
arg = parser.parse_args()
resp = {"test":3.14159*pow(arg.v,2)} #圓面積
print( json.dumps(resp) )
用print回傳值才對,一傻真的一堆錯
您好,我單獨執行py檔可以出現{"test": 0.0}
而在php裡照著您上面的做法
<?php
$v = 5; //半徑
$respPy = json_decode(exec("./circle.py -v $v"));
echo %respPy["test"];
?>
還是有出現錯誤訊息
標投已加上
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"> </script>
你是要在php內呼叫python?
是的
render_template()
並不會執行 php 程式
你必須先執行 php 程式後,再用 python 處理返回值
from flask import Flask, render_template, request, url_for, redirect
import numpy as np
import subprocess as sp
app = Flask(__name__)
@app.route('/')
def index():
out = sp.run(["php", "test.php"], stdout=sp.PIPE)
return out.stdout
如果你沒辦法在終端機運行 PHP 的話,可以參考我的這篇文章: