在 PHP 中執行 python 腳本(新增至 Pandas df 並儲存檔案)
P粉536532781
P粉536532781 2024-03-27 21:05:37
0
1
488

當使用者選擇 xlsx 檔案並透過 POST 提交時,我想取得該文件,將其放入 pandas df 中,進行一些資料清理/格式化,然後將其作為可下載的 csv 發送回瀏覽器。

我已經讓 python/pandas 腳本正常運作了。 我已經能夠成功地將一個簡單的 $PHP 變數(檔案名稱)傳遞給 Python 腳本,在 Python 中列印出來,然後在 PHP 中回顯它。 ……但我無法運行 Python 腳本的其餘部分(pandas 部分)。就好像我的腳本的其餘部分不存在一樣。

我正在做的是:

  1. 將臨時提交的檔案從 $_FILES 移到另一個名為「uploads」的資料夾(同一目錄)。
  2. 取得新儲存檔案的路徑。
  3. 將其傳遞到 Python 腳本並將格式化文件保存到上傳/完成 - 我認為這是我在某處失敗的地方

#(我還沒有弄清楚如何將文件發送回瀏覽器的部分 - 只是嘗試先獲取文件)。

我在 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粉536532781
P粉536532781

全部回覆(1)
P粉488464731

聽起來你很接近。 問題在於 PHP 是在伺服器端處理的,因此如果您希望 POST 返回網頁程式碼,請發送回 HTML,因為 PHP 是用於在伺服器端產生 HTML 的。

如果您的伺服器上有 PHP 引擎,則可以儲存 PHP 伺服器端,並在 POST 回應中傳回新建立的 PHP 頁面的公開連結。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板