Web开发:C#通过ProcessStartInfo动态调用执行Python脚本

一、代码思路

1.定义要传递的整数和字符串。

2.创建临时 Python 脚本内容。

3.将脚本写入临时文件。

4.配置并启动 Python 进程。

5.输出结果并删除临时文件。

二、代码

cs 复制代码
using System;
using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        int numberToPass = 5; // 要传递的整数
        string stringToPass = "Hello"; // 要传递的字符串

        // 创建一个临时 Python 脚本
        string tempFilePath = Guid.NewGuid().ToString() + ".py";
        string pythonCode = @"
import sys

def process_data(num, text):
    num += 1
    print(f'Number: {num}, String: {text}')

if __name__ == '__main__':
    # 从命令行参数获取数据
    num = int(sys.argv[1])
    text = sys.argv[2]
    process_data(num, text)";

        // 写入临时文件
        System.IO.File.WriteAllText(tempFilePath, pythonCode);

        // 设置进程信息
        ProcessStartInfo start = new ProcessStartInfo();
        start.FileName = @"D:\Python\python.exe"; // Python 解释器路径
        start.Arguments = $"{tempFilePath} {numberToPass} \"{stringToPass}\""; // 传递参数
        start.UseShellExecute = false; // 不使用操作系统外壳启动
        start.RedirectStandardOutput = true; // 重定向标准输出
        start.RedirectStandardError = true; // 重定向标准错误

        using (Process process = Process.Start(start))
        {
            // 获取输出
            string result = process.StandardOutput.ReadToEnd();
            string error = process.StandardError.ReadToEnd();
            process.WaitForExit();

            // 输出结果
            if (!string.IsNullOrEmpty(result))
            {
                Console.WriteLine("Output: " + result);
            }

            if (!string.IsNullOrEmpty(error))
            {
                Console.WriteLine("Error: " + error);
            }
        }

        // 删除临时文件
        System.IO.File.Delete(tempFilePath);
    }
}
相关推荐
鱼跃鹰飞几秒前
Leetcode:97.交错字符串
linux·服务器·leetcode
晚霞的不甘几秒前
Flutter for OpenHarmony构建全功能视差侧滑菜单系统:从动效设计到多页面导航的完整实践
前端·学习·flutter·microsoft·前端框架·交互
黎子越几秒前
python相关练习
java·前端·python
电商API&Tina5 分钟前
电商数据采集 API 接口 全维度解析(技术 + 商业 + 合规)
java·大数据·开发语言·数据库·人工智能·json
liwulin050615 分钟前
【JSON】使用com.fasterxml.jackson解析json字符串
java·数据库·json
what丶k34 分钟前
深度解析:以Kafka为例,消息队列消费幂等性的实现方案与生产实践
java·数据结构·kafka
北极糊的狐37 分钟前
若依项目vue前端启动键入npm run dev 报错:不是内部或外部命令,也不是可运行的程序或批处理文件。
前端·javascript·vue.js
星火开发设计38 分钟前
C++ 输入输出流:cin 与 cout 的基础用法
java·开发语言·c++·学习·算法·编程·知识
XRJ040618xrj40 分钟前
Nginx下构建PC站点
服务器·前端·nginx
毕设源码-邱学长1 小时前
【开题答辩全过程】以 基于Springboot的酒店住宿信息管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端