當使用者選擇 xlsx 檔案並透過 POST 提交時,我想取得該文件,將其放入 pandas df 中,進行一些資料清理/格式化,然後將其作為可下載的 csv 發送回瀏覽器。
我已經讓 python/pandas 腳本正常運作了。 我已經能夠成功地將一個簡單的 $PHP 變數(檔案名稱)傳遞給 Python 腳本,在 Python 中列印出來,然後在 PHP 中回顯它。 ……但我無法運行 Python 腳本的其餘部分(pandas 部分)。就好像我的腳本的其餘部分不存在一樣。
我正在做的是:
#(我還沒有弄清楚如何將文件發送回瀏覽器的部分 - 只是嘗試先獲取文件)。
我在 htdocs 資料夾中安裝了 python venv,並且它已啟動。
我的 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 不會做任何事情(當我使用常規檔案名稱子 sys.argv[1] 時有效):
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')
我還沒有嘗試將 df 列印到 PHP。我只是想看看是否可以產生 csv 檔案。
我嘗試了 escapeshellcmd 和系統,但沒有成功。我在這裡讀到了一個非常相似的問題,其中提到了 chmod 777 用於設定權限。我這樣做是為了更改權限,現在我的資料夾可供所有人讀寫,但它仍然無法運作。
我很困惑,因為除了 pandas 部分之外,一切似乎都運作良好並且連接良好。有人可以幫忙嗎?我是 PHP 新手,非常感謝它。
P粉4884647312024-03-28 17:43:57
聽起來你很接近。 問題在於 PHP 是在伺服器端處理的,因此如果您希望 POST 返回網頁程式碼,請發送回 HTML,因為 PHP 是用於在伺服器端產生 HTML 的。
如果您的伺服器上有 PHP 引擎,則可以儲存 PHP 伺服器端,並在 POST 回應中傳回新建立的 PHP 頁面的公開連結。