国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
一、exec()
1、直接運行
2、傳參,接收返回數(shù)據(jù)
二、system()
三、passthru()
首頁 后端開發(fā) PHP問題 PHP程序中運行Python腳本的方法

PHP程序中運行Python腳本的方法

Sep 09, 2022 pm 01:48 PM
php

(推薦教程:PHP視頻教程

介紹一下,如何在php程序中運行Python腳本,

在php中python程序的運行,主要依靠 程序執(zhí)行函數(shù),

這里說一下三個相關(guān)函數(shù):exec(),system() 和 passthru()。

這里主要講 exec() 函數(shù),介紹使用該函數(shù)傳遞參數(shù),

以及如何使用python返回josn數(shù)據(jù)供php使用。

一、exec()

執(zhí)行一個外部程序

exec ( string $command [, array &$output [, int &$return_var ]] ) : string

參數(shù)說明:

command:要執(zhí)行的命令,其中包括三個子串,第一個子串為使用的當前系統(tǒng)的解釋器,第二個子串為所要執(zhí)行腳本的位置,第三個子串為所需傳入的參數(shù)不限個數(shù),中間用空格分隔,注意格式。子串間使用空格分割。

output:如果提供了 output 參數(shù),那么會用命令執(zhí)行的輸出填充此數(shù)組,每行輸出填充數(shù)組中的一個元素。(說明:output 中存放的并非python中return的值,并且所有return的值都不會進行保存,output 中存放的是python腳本中輸出的值,即為 print() 函數(shù)所輸出的所有數(shù)據(jù))

return_var:如果同時提供 output 和 return_var 參數(shù),命令執(zhí)行后的返回狀態(tài)會被寫入到此變量。

1、直接運行

index.php

<?php
$re = exec(&#39;python ceshi.py&#39;, $out);
// $re = iconv(&#39;gbk&#39;, &#39;utf-8&#39;, $re);
var_dump($out);
echo &#39;<br/>&#39;;
var_dump($re);

ceshi.py

def send():
    data = &#39;1,2,3,4,5&#39;
    print(data)
if __name__ == &#39;__main__&#39;:
    send()

(重要說明:如果Python腳本返回的數(shù)據(jù)中含有中文,需要使用 iconv('gbk', 'utf-8', $re); 進行轉(zhuǎn)義)

2、傳參,接收返回數(shù)據(jù)

inde.php

$canshu1 = &#39;這是PHP傳過來的參數(shù)&#39;;
$canshu2 = date(&#39;Y-m-d&#39;);
$re = exec("python ceshi.py $canshu1 $canshu2");
$re = iconv(&#39;gbk&#39;, &#39;utf-8&#39;, $re);
var_dump($re);

test.py

import sys
def send():
    # a1 = sys.argv[1]
    # a2 = sys.argv[2]
    re = sys.argv[1:]
    data = &#39;1,2,3,4,5,&#39; + &#39;,&#39;.join(re) # 轉(zhuǎn)字符串
    print(data)
if __name__ == &#39;__main__&#39;:
    send()

導入sys包,使用sys.argv[]數(shù)組獲取傳入?yún)?shù),第一個傳入?yún)?shù)為sys.argv[1],第二個為sys.argv[2]以此類推,不要使用argv[0]

接收返回 json 數(shù)據(jù):

import sys
import json
def send():
    dict = {&#39;id&#39;:111, &#39;title&#39;:&#39;測試title&#39;}
    dict[&#39;data&#39;] = sys.argv[1:]
    jsonArr = json.dumps(dict, ensure_ascii=False)
    print(jsonArr)
if __name__ == &#39;__main__&#39;:
    send()

(涉及到中文字符的時候,需要指定ensure_ascii=False)

二、system()

執(zhí)行外部程序,并且顯示輸出

system ( string $command [, int &$return_var ] ) : string

同 C 版本的 system() 函數(shù)一樣,本函數(shù)執(zhí)行 command 參數(shù)所指定的命令,并且輸出執(zhí)行結(jié)果。

如果 PHP 運行在服務器模塊中, system() 函數(shù)還會嘗試在每行輸出完畢之后,自動刷新 web 服務器的輸出緩存。

如果要獲取一個命令未經(jīng)任何處理的 原始輸出,請使用 passthru() 函數(shù)。

index.php

<?php
echo &#39;這是運行直接輸出:&#39;;
$re = system(&#39;python ceshi.py&#39;);
// $re = iconv(&#39;gbk&#39;, &#39;utf-8&#39;, $re);
echo &#39;<br/>&#39;;
echo &#39;這是賦值輸出:&#39;;
var_dump($re);

這里使用最初版本的 test.py,輸出效果如下:

三、passthru()

執(zhí)行外部程序,并且顯示輸出

passthru ( string $command [, int &$return_var ] ) : void

同 exec() 函數(shù)類似, passthru() 函數(shù) 也是用來執(zhí)行外部命令(command)的。當所執(zhí)行的 Unix 命令輸出二進制數(shù)據(jù),并且需要直接傳送到瀏覽器的時候,需要用此函數(shù)來替代 exec() 或 system() 函數(shù)。常用來執(zhí)行諸如 pbmplus 之類的可以直接輸出圖像流的命令。通過設置 Content-type 為 image/gif,然后調(diào)用 pbmplus 程序輸出 gif 文件,就可以從 PHP 腳本中直接輸出圖像到瀏覽器。

index.php

echo &#39;這是運行直接輸出:&#39;;
$re = passthru(&#39;python ceshi.py&#39;);
// $re = iconv(&#39;gbk&#39;, &#39;utf-8&#39;, $re);
echo &#39;<br/>&#39;;
echo &#39;這是賦值輸出:&#39;;
var_dump($re);

這里使用最初版本的 test.py,輸出效果如下:

(推薦教程:PHP視頻教程

以上是PHP程序中運行Python腳本的方法的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

在C中使用std :: Chrono 在C中使用std :: Chrono Jul 15, 2025 am 01:30 AM

std::chrono在C 中用于處理時間,包括獲取當前時間、測量執(zhí)行時間、操作時間點與持續(xù)時間及格式化解析時間。1.獲取當前時間使用std::chrono::system_clock::now(),可轉(zhuǎn)換為可讀字符串但系統(tǒng)時鐘可能不單調(diào);2.測量執(zhí)行時間應使用std::chrono::steady_clock以確保單調(diào)性,并通過duration_cast轉(zhuǎn)換為毫秒、秒等單位;3.時間點(time_point)和持續(xù)時間(duration)可相互操作,但需注意單位兼容性和時鐘紀元(epoch)

PHP如何處理環(huán)境變量? PHP如何處理環(huán)境變量? Jul 14, 2025 am 03:01 AM

toAccessenvironmentVariablesInphp,useGetenv()或$ _envsuperglobal.1.getEnv('var_name')retievesSpecificvariable.2。$ _ en v ['var_name'] accessesvariablesifvariables_orderInphp.iniincludes“ e” .setVariablesViaCliWithvar = vualitephpscript.php,inapach

為什么我們評論:PHP指南 為什么我們評論:PHP指南 Jul 15, 2025 am 02:48 AM

PHPhasthreecommentstyles://,#forsingle-lineand/.../formulti-line.Usecommentstoexplainwhycodeexists,notwhatitdoes.MarkTODO/FIXMEitemsanddisablecodetemporarilyduringdebugging.Avoidover-commentingsimplelogic.Writeconcise,grammaticallycorrectcommentsandu

PHP標頭重定向不起作用 PHP標頭重定向不起作用 Jul 14, 2025 am 01:59 AM

header函數(shù)跳轉(zhuǎn)失敗原因及解決方法:1.header前已有輸出,需檢查并移除所有前置輸出或使用ob_start()緩沖;2.未加exit導致后續(xù)代碼干擾,應在跳轉(zhuǎn)后立即添加exit或die;3.路徑錯誤應使用絕對路徑或動態(tài)拼接確保正確;4.服務器配置或緩存干擾可嘗試清除緩存或更換環(huán)境測試。

PHP準備的聲明獲得結(jié)果 PHP準備的聲明獲得結(jié)果 Jul 14, 2025 am 02:12 AM

在PHP中使用預處理語句獲取數(shù)據(jù)庫查詢結(jié)果的方法因擴展而異,1.使用mysqli時可通過get_result()配合fetch_assoc()獲取關(guān)聯(lián)數(shù)組,適用于現(xiàn)代環(huán)境;2.也可使用bind_result()綁定變量,適合字段少、結(jié)構(gòu)固定的情況,兼容性好但字段多時較繁瑣;3.使用PDO時通過fetch(PDO::FETCH_ASSOC)獲取關(guān)聯(lián)數(shù)組,或用fetchAll()一次性獲取所有數(shù)據(jù),接口統(tǒng)一且錯誤處理更清晰;此外需注意參數(shù)類型匹配、執(zhí)行execute()、及時釋放資源及開啟錯誤報告以

PHP檢查字符串是否以特定的字符串開頭 PHP檢查字符串是否以特定的字符串開頭 Jul 14, 2025 am 02:44 AM

在PHP中判斷字符串是否以特定字符串開頭可通過多種方法實現(xiàn):1.使用strncmp()比較前n個字符,若返回0則開頭匹配,不區(qū)分大小寫;2.使用strpos()檢查子字符串位置是否為0,區(qū)分大小寫,可用stripos()替代實現(xiàn)不區(qū)分大小寫;3.可封裝startsWith()或str_starts_with()函數(shù)提高復用性;此外需注意空字符串默認返回true、編碼兼容性及性能差異,strncmp()通常效率更高。

如何避免PHP中未定義的索引錯誤 如何避免PHP中未定義的索引錯誤 Jul 14, 2025 am 02:51 AM

避免“undefinedindex”錯誤的關(guān)鍵方法有三:首先,使用isset()檢查數(shù)組鍵是否存在并確保值不為null,適用于大多數(shù)常規(guī)場景;其次,使用array_key_exists()僅判斷鍵是否存在,適用于需要區(qū)分鍵不存在和值為null的情況;最后,使用空合并運算符??(PHP7 )簡潔地設置默認值,推薦用于現(xiàn)代PHP項目,同時注意表單字段名拼寫、謹慎使用extract()及遍歷前檢查數(shù)組非空以進一步規(guī)避風險。

php準備的語句與條款 php準備的語句與條款 Jul 14, 2025 am 02:56 AM

使用PHP預處理語句執(zhí)行帶有IN子句的查詢時,1.需根據(jù)數(shù)組長度動態(tài)生成占位符;2.使用PDO時可直接傳入數(shù)組,用array_values確保索引連續(xù);3.使用mysqli時需構(gòu)造類型字符串并綁定參數(shù),注意展開數(shù)組的方式及版本兼容性;4.避免拼接SQL、處理空數(shù)組和確保數(shù)據(jù)類型匹配。具體做法是:先用implode與array_fill生成占位符,再依擴展特性綁定參數(shù),從而安全執(zhí)行IN查詢。

See all articles