Calling Python Scripts from C#
It is possible to execute Python scripts from C# without the use of external libraries like IronPython. Here's how you can approach this:
Consider the following Python script (code.py):
if __name__ == '__main__': with open(sys.argv[1], 'r') as f: s = f.read() print(s)
To run this script in C#, adjust your run_cmd method as follows:
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); } } }
By setting UseShellExecute to false, you gain control over the command and arguments passed to Python. You must provide the full path to python.exe as FileName and construct the Arguments string to include both the script path (cmd) and the file path to read (args).
Note that continuously calling the Python script from C# may affect performance due to the overhead of creating a new process each time. If your script takes significant runtime, consider optimizing your approach or using a more suitable interprocess communication mechanism.
The above is the detailed content of How Can I Execute Python Scripts from C# Without IronPython?. For more information, please follow other related articles on the PHP Chinese website!