在 PHP 中运行 python 脚本(添加到 Pandas df 并保存文件)
P粉536532781
P粉536532781 2024-03-27 21:05:37
0
1
538

当用户选择 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 页面的公共链接。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板