當使用者選擇 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 新手,非常感謝它。
聽起來你很接近。 問題在於 PHP 是在伺服器端處理的,因此如果您希望 POST 返回網頁程式碼,請發送回 HTML,因為 PHP 是用於在伺服器端產生 HTML 的。
如果您的伺服器上有 PHP 引擎,則可以儲存 PHP 伺服器端,並在 POST 回應中傳回新建立的 PHP 頁面的公開連結。