Lorsque l'utilisateur sélectionne un fichier xlsx et le soumet via POST, je souhaite prendre le fichier, le mettre dans un pandas df, effectuer un nettoyage/formatage des données, puis le renvoyer au navigateur sous forme de fichier CSV téléchargeable.
J'ai le script python/pandas qui fonctionne bien. J'ai réussi à transmettre avec succès une simple variable $PHP (le nom de fichier) à un script Python, à l'imprimer en Python, puis à la renvoyer en PHP. ... mais je ne peux pas exécuter le reste du script Python (la partie pandas). C'est comme si le reste de mon script n'existait pas.
Ce que je fais, c'est :
(Je n'ai pas compris comment renvoyer le fichier au navigateur - j'essaie juste d'obtenir le fichier en premier).
J'ai installé python venv dans le dossier htdocs et il est activé.
Mon 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;
Mon Python fonctionne :
import sys print("Variable passed to Python is: " + sys.argv[1])
Mon Python ne fait rien (fonctionne lorsque j'utilise le nom de fichier normal sub 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')
Je n'ai pas encore essayé d'imprimer df en PHP. Je veux juste voir si je peux générer un fichier csv.
J'ai essayé escapeshellcmd et system sans succès. J'ai lu une question très similaire ici qui mentionnait chmod 777 pour définir les autorisations. J'ai fait cela pour modifier les autorisations et maintenant mon dossier est lisible et accessible en écriture par tout le monde, mais cela ne fonctionne toujours pas.
Je suis confus car tout semble bien fonctionner et connecté sauf la partie pandas. Quelqu'un peut-il m'aider ? Je suis nouveau sur PHP et je l'apprécie vraiment.
On dirait que vous êtes proche. Le problème est que PHP est géré côté serveur, donc si vous souhaitez que le POST renvoie le code de la page Web, renvoyez le HTML, car PHP est utilisé pour générer du HTML côté serveur.
Si vous avez un moteur PHP sur votre serveur, vous pouvez enregistrer le côté serveur PHP et renvoyer un lien public vers la page PHP nouvellement créée dans la réponse POST.