Je tente d'appeler un script python à partir d'un script maître. J'ai besoin que la structure de données soit générée seulement à partir du script principal, puis transmise au script de sous-processus en tant qu'argument à utiliser dans le sous-processus. Voici ma tentative d'écriture du script maître python requis.Transférer des données pandas dans un sous-processus python. Ouvrir comme argument
from subprocess import PIPE, Popen
import pandas as pd
test_dataframe = pd.read_excel(r'C:\test_location\file.xlsx',sheetname='Table')
sp = Popen(["python.exe",'C:/capture/test.py'], shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
sp.communicate(test_dataframe)
Et voici l'erreur: TypeError: argument 1 must be convertible to a buffer, not DataFrame
Ceci est ma première fois d'essayer d'utiliser le module subprocess donc je ne suis pas très bon dans ce domaine encore. Toute aide sera très appréciée.
Salut Alex, merci pour la réponse. J'ai essayé d'utiliser pickle, mais après avoir traversé le script maître, il se ferme sans donner aucune erreur et aucune commande du script de sous-processus est exécutée du tout. –
Etes-vous sûr que cette sous-fonction n'est pas exécutée? Peut-être est-il exécuté, mais vous ne vérifiez pas s'il a terminé avec succès? Vérifiez également la sortie du processus, elle est renvoyée par '' 'sp.comminucate'''. À côté de cela, vérifiez ce que fait '' 'shell = True'''. Vous passez commande en tant que tableau, mais spécifiez aussi '' 'shell = True'''. –
Mon sous-processus commence par une commande d'impression et se termine par raw_input() pour que je puisse voir s'il fonctionne ou pas, la fenêtre pop-up ne montre rien avant de se fermer tout seul. J'ai essayé avec et sans utiliser le shell, je ne reçois rien du sous-processus de toute façon. J'ai essayé d'exécuter sans stdin, stdout et stderr, seulement alors la première commande d'impression de sous-processus s'exécute mais se bloque à pickle.loads (sys.stdin.read()) pour toujours. –