php調用python腳本


主要參考兩篇文章

PHP中的換行詳解

利用PHP調試Python

Python小窺 - 寫給Python的入門者

這兩篇文章結合起來進行測試,主要過程如下

cd /var/www/html
mkdir script
nano script/test.py
#粘貼代碼
nano test002.php
#粘貼代碼

期間主要遇到的問題有
php文件里面的路徑/script/test.py,改為script/test.py,作者顯然在根目錄添加的目錄

php換行的實現,想實現,本來用\n,結果失敗,於是用<br>,搞定,實現結果如下圖

繼續修改,發現對於連續迭代語句無法正常打印數據,具體還沒查詢原因,猜測是由於python本身報錯,可以本地運行腳本測試。

另外的測試是中文支持情況,發現中文的時候網頁全部空白,顯然就是報錯了,本來以為是php對中文支持的不好,於是修改了,添加了中文支持,發現情況依舊,於是本地測試python的中文支持情況,發現不支持,按照報錯信息

Non-ASCII character '\xe8' in file test.py on line 9, but no encodi

查詢解決方法。原來需要開頭添加utf8的支持,添加行注釋搞定,最終的php腳本內容為

<?php
#header("Content-type: text/html; charset=utf-8");
$output = shell_exec('python script/test.py');

$array = explode(',', $output);

foreach ($array as $value) {
#echo "\n";
echo $value;
echo "<br>";
}
?>

 

python內容為

# coding=utf-8
print 'this is a Python program with PHP,'
#print '\n'
print "22,"
print "21,"
print "26,"
print "22,"
print "21,"
print 'Write a program that prints the numbers from 1 to 100. But for multiples of three print "Fizz" instead of the number and for the multiples of five $
print '要求:打印1到100,遇到3的倍數,只打印“Fizz”,遇到5的倍數,打印“Buzz”,同時遇到3,5的倍數,打印“FizzBuzz”,'
for x in range(1,101):print"Fizz"[x%3*4:]+"Buzz"[x%5*4:]or x
print ","
for x in range(1,11):print"qiangge_is_god"[x%3*14:]+"i_can't_believe_it"[x%5*18:]or x
print ","
False = True
if False:
    print "Hello"
else:
    print "World"
print ','

 最后顯示的效果圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM