Comment shell exécuter un fichier en C #?

J’ai essayé d’utiliser la classe Process comme toujours, mais cela n’a pas fonctionné. Tout ce que je fais est d’essayer de lancer un fichier Python comme si quelqu’un cliquait deux fois dessus.

C’est possible?

MODIFIER:

Exemple de code:

ssortingng pythonScript = @"C:\callme.py"; ssortingng workDir = System.IO.Path.GetDirectoryName ( pythonScript ); Process proc = new Process ( ); proc.StartInfo.WorkingDirectory = workDir; proc.StartInfo.UseShellExecute = true; proc.StartInfo.FileName = pythonScript; proc.StartInfo.Arguments = "1, 2, 3"; 

Je ne reçois aucune erreur, mais le script n’est pas exécuté. Lorsque je lance le script manuellement, je vois le résultat.

Voici mon code pour exécuter un script python à partir de C #, avec une entrée et une sortie standard redirigées (je transmets des informations via l’entrée standard), copiées à partir d’un exemple quelque part sur le Web. L’emplacement Python est codé en dur comme vous pouvez le voir, peut être refactorisé.

  private static ssortingng CallPython(ssortingng script, ssortingng pyArgs, ssortingng workingDirectory, ssortingng[] standardInput) { ProcessStartInfo startInfo; Process process; ssortingng ret = ""; try { startInfo = new ProcessStartInfo(@"c:\python25\python.exe"); startInfo.WorkingDirectory = workingDirectory; if (pyArgs.Length != 0) startInfo.Arguments = script + " " + pyArgs; else startInfo.Arguments = script; startInfo.UseShellExecute = false; startInfo.CreateNoWindow = true; startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardError = true; startInfo.RedirectStandardInput = true; process = new Process(); process.StartInfo = startInfo; process.Start(); // write to standard input foreach (ssortingng si in standardInput) { process.StandardInput.WriteLine(si); } ssortingng s; while ((s = process.StandardError.ReadLine()) != null) { ret += s; throw new System.Exception(ret); } while ((s = process.StandardOutput.ReadLine()) != null) { ret += s; } return ret; } catch (System.Exception ex) { ssortingng problem = ex.Message; return problem; } } 

Process.Start devrait fonctionner. si ce n’est pas le cas, publieriez-vous votre code et l’erreur que vous obtenez?

Vous avez oublié proc.Start () à la fin. Le code que vous avez devrait fonctionner si vous appelez Start ().