Appel de scripts Python depuis C#
Il est possible d'exécuter des scripts Python depuis C# sans utiliser de bibliothèques externes comme IronPython. Voici comment vous pouvez aborder cela :
Considérez le script Python suivant (code.py) :
if __name__ == '__main__': with open(sys.argv[1], 'r') as f: s = f.read() print(s)
Pour exécuter ce script en C#, ajustez votre méthode run_cmd comme suit :
private void run_cmd(string cmd, string args) { ProcessStartInfo start = new ProcessStartInfo(); // Specify the complete path to python.exe start.FileName = "my/full/path/to/python.exe"; // Build the argument string with the script and file paths start.Arguments = string.Format("{0} {1}", cmd, args); // Disable using the shell to gain more control start.UseShellExecute = false; // Enable standard output redirection to capture the script's output start.RedirectStandardOutput = true; using (Process process = Process.Start(start)) { using (StreamReader reader = process.StandardOutput) { string result = reader.ReadToEnd(); Console.Write(result); } } }
En définissant UseShellExecute sur false, vous prenez le contrôle de la commande et des arguments transmis à Python. Vous devez fournir le chemin complet de python.exe en tant que FileName et construire la chaîne Arguments pour inclure à la fois le chemin du script (cmd) et le chemin du fichier à lire (args).
Notez que l'appel continu du script Python depuis C# peut affecter les performances en raison de la surcharge liée à la création d'un nouveau processus à chaque fois. Si votre script prend un temps d'exécution important, envisagez d'optimiser votre approche ou d'utiliser un mécanisme de communication interprocessus plus adapté.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!