Maison >développement back-end >Tutoriel Python >Comment puis-je exécuter des scripts Python à partir de C# sans IronPython ?

Comment puis-je exécuter des scripts Python à partir de C# sans IronPython ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-15 16:39:11351parcourir

How Can I Execute Python Scripts from C# Without IronPython?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn