當(dāng)使用者選擇 xlsx 檔案並透過(guò) POST 提交時(shí),我想取得該文件,將其放入 pandas df 中,進(jìn)行一些資料清理/格式化,然後將其作為可下載的 csv 發(fā)送回瀏覽器。
我已經(jīng)讓 python/pandas 腳本正常運(yùn)作了。 我已經(jīng)能夠成功地將一個(gè)簡(jiǎn)單的 $PHP 變數(shù)(檔案名稱(chēng))傳遞給 Python 腳本,在 Python 中列印出來(lái),然後在 PHP 中回顯它。 ……但我無(wú)法運(yùn)行 Python 腳本的其餘部分(pandas 部分)。就好像我的腳本的其餘部分不存在一樣。
我正在做的是:
#(我還沒(méi)有弄清楚如何將文件發(fā)送回瀏覽器的部分 - 只是嘗試先獲取文件)。
我在 htdocs 資料夾中安裝了 python venv,並且它已啟動(dòng)。
我的 PHP:
$fname = $_FILES["upload"]["tmp_name"]; $upload_path = 'uploads/' . $fname; $output = shell_exec('/Applications/MAMP/htdocs/venv/bin/python3 /Applications/MAMP/htdocs/data_cleanse.py ' . $upload_path); echo $output;
我的Python可以工作:
import sys print("Variable passed to Python is: " + sys.argv[1])
我的 Python 不會(huì)做任何事情(當(dāng)我使用常規(guī)檔案名稱(chēng)子 sys.argv[1] 時(shí)有效):
import sys import pandas as pd uploaded_file = sys.argv[1] df = pd.read_excel(uploaded_file) df.to_csv('uploads/completed/completed_doc.csv')
我還沒(méi)有嘗試將 df 列印到 PHP。我只是想看看是否可以產(chǎn)生 csv 檔案。
我嘗試了 escapeshellcmd 和系統(tǒng),但沒(méi)有成功。我在這裡讀到了一個(gè)非常相似的問(wèn)題,其中提到了 chmod 777 用於設(shè)定權(quán)限。我這樣做是為了更改權(quán)限,現(xiàn)在我的資料夾可供所有人讀寫(xiě),但它仍然無(wú)法運(yùn)作。
我很困惑,因?yàn)槌?pandas 部分之外,一切似乎都運(yùn)作良好並且連接良好。有人可以幫忙嗎?我是 PHP 新手,非常感謝它。
聽(tīng)起來(lái)你很接近。 問(wèn)題在於 PHP 是在伺服器端處理的,因此如果您希望 POST 返回網(wǎng)頁(yè)程式碼,請(qǐng)發(fā)送回 HTML,因?yàn)?PHP 是用於在伺服器端產(chǎn)生 HTML 的。
如果您的伺服器上有 PHP 引擎,則可以?xún)?chǔ)存 PHP 伺服器端,並在 POST 回應(yīng)中傳回新建立的 PHP 頁(yè)面的公開(kāi)連結(jié)。