C#如何用最简单方法调用Python?

news/2024/6/20 16:19:31

最近有群友咨询C#如何调用Python?小编尝试Python.NET过程中遭遇的版本兼容性和环境配置难题,小编决定寻找一个更为简单、稳定且对初学者友好的解决方案。小编搜索一番,除了Python.NET之外,还有其他途径能够帮助我们轻松地在C#项目调用Python脚本,那就是通过命令行调用,使用 System.Diagnostics.Process 类可以启动 Python 进程,并通过命令行参数传递脚本路径等信息。调用流程如下:

1、环境准备

在操作系统中安装好python,最好3.0以上版本;然后新建一个.NET8控制台程序,不需要引用任何组件;最后新建一个python文件用来测试,用txt新建并另存为py文件就可以。代码如下:

#定义一个数字列表
numbers = [10, 20, 30, 40, 50]#调用内置函数进行聚合
sum_of_numbers = sum(numbers)  # 求和print('上面数组求和为:',sum_of_numbers)print('欢迎关注公众号:Dotnet开发跳槽!');

2、通过命令行调用Python

此方法的核心思想是,C#程序通过System.Diagnostics命名空间下的Process类来启动Python解释器,并向其传递Python脚本的路径及必要的参数。代码如下:

using System.Diagnostics;using (Process process = new Process())
{
    process.StartInfo.FileName = "python";
    process.StartInfo.Arguments = "E:\\lea\\python\\demo.py";
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardOutput = true;
    process.Start();
    string result = process.StandardOutput.ReadToEnd();
    process.WaitForExit();
    Console.WriteLine(result);
}

效果如下:

优势与局限

优势:该方法简单直观,对环境的依赖较少,不需要安装额外的库或组件,特别适用于环境配置复杂或版本兼容性问题突出的情况。

局限:相比直接的库集成(如Python.NET),这种方法牺牲了一定的性能,特别是在频繁的交互场景下,每次调用都需要启动新的Python进程。此外,数据交换主要通过文本输出,处理大量或复杂数据结构时不够高效。大家使用Python.NET成功没有?欢迎分享经验。

结语

本文讲述了C#如何用最简单调用Python的方法,通过命令行调用Python。它能够快速搭建起C#与Python之间的通信桥梁,尤其适合快速验证概念或进行初步集成测试。在大模型时代,Python学习的必要性增大,尤其是.NET开发,C#中调用Python大大降低了学习成本。对于在C#中调用Python大家还有什么好的方法,欢迎留言讨论。

来源公众号:DotNet开发跳槽    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/34547.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

创建你的-Mysql-数据库-全-

创建你的 Mysql 数据库(全)原文:zh.annas-archive.org/md5/853FEC9D976A75004408D5A9A661EDD8 译者:飞龙 协议:CC BY-NC-SA 4.0前言 1995 年发布的 MySQL 已成为最受欢迎的开源数据库系统。MySQL 和 phpMyAdmin 的普及使得许多非 IT 专家能够使用 MySQL 后端构建动态网站。…

【Unreal】虚幻GAS系统快速入门

【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!前言最近在用UE做单机ARPG的战斗系统,研究了一下GAS。本文主要介绍GAS各个模块的用途,以及特定功能的多种实现方法。为了让大部分人能…

[CISCN 2022 初赛]online_crt crash漏洞引起的命令执行

几天没做题了,有点生疏。看题吧。题目标签说是CVE-2022-1292,去看看。意思就是在$fname处构造恶意文件名导致的命令注入,而且前面没有认真过滤,也就是文件名命令执行。 看看题目源码:点击查看代码 import datetime import json import os import socket import uuid from …

解锁你的数据库:JPA和Hibernate的乐观锁与悲观锁

哈喽,大家好,我是木头左!引言 在当今的软件开发领域,数据库操作是不可或缺的一部分。然而,随着并发操作的增加,如何正确地处理并发问题是每个开发者都需要面对的挑战。本文将深入探讨JPA(Java Persistence API)和Hibernate这两种ORM(对象关系映射)工具中的乐观锁和悲…

易基因:WGBS+ChIP-seq等表观组分析揭示FOXM1 是抗肿瘤免疫应答的关键调控因子

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 食管癌是一种常见的恶性肿瘤,包括两种主要的组织学亚型:食管鳞状细胞癌(squamous cell carcinoma,ESCC)和食管腺癌(adenocarcinoma,EAC)。近两年来对抗肿瘤免疫应答机制的理解得到了显著提高,免疫检查…

JavaWeb分布式事务处理

哈喽,大家好,我是木头左!一、分布式事务的概念与特性 在开始之前,首先需要理解什么是分布式事务以及其特性。将从最基础的定义和特性开始,逐步深入到其在实际应用中的表现和影响。 1.1 分布式事务的概念 分布式事务是指跨越多个独立的计算机资源(如数据库、应用服务器等)…

Merry Christmas 礼物

Merry Christmas 圣诞快乐!! 我的圣诞礼物,yes~Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` Merry Christmas 礼物 日期:2020-12-25 阿珏 谈天说地 浏览:340次 评论:3条 M…

2020年迟到的年终总结

我一直在想究竟要不要写年终总结,又该写点什么好呢 纠结了一个多月,这件事一直放在心里,直到前几天和杨小 姐 杰打游戏时,问我:“年终总结写了吗?” 这才让我决定一定要写。Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过…