我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C#调用Python程序传参数获得返回值

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C#调用Python程序传参数获得返回值

说明

C# 调用 Python 程序有多种方式,本篇用的是第 4 种:

  • nuget的ironPython;
  • 用 c/c++ 调用python,再封装成库文件,c# 调用;
  • c# 命令行调用.py文件执行;
  • python 程序制作成 .exe 可执行文件,c# 使用命令行进行传参取返回值。

1. Python 脚本

先建个测试脚本 d://Test/EchoHi.py 代码如下:

import sys
def EchoHi(a):
    return ("Hello, " + a)
if __name__ == "__main__":
    # print('参数列表:', str(sys.argv))
    print(EchoHi(sys.argv[1]))

测试一哈

D:\Test>python EchoHi.py Mr.Tree
Hello, Mr.Tree

2. 打包成Windows可执行文件

首先安装给python打包的python包

D:\Test>pip install pyinstaller

执行打包命令,看输出

D:\Test>pyinstaller -F EchoHi.py

21185 INFO: Writing RT_ICON 7 resource with 1128 bytes
21192 INFO: Updating manifest in D:\Test\build\EchoHi\run.exe.0u78g5s3
21444 INFO: Updating resource type 24 name 1 language 0
21447 INFO: Appending archive to EXE D:\Test\dist\EchoHi.exe
21634 INFO: Building EXE from EXE-00.toc completed successfully.

这里有生成的可执行文件的位置,进入可执行文件的目录测试

D:\Test\dist>EchoHi.exe Mr.Tree
Hello, Mr.Tree

3. C# 程序

CallCmd.cs 代码如下

using System;
class Test
{
    public static void Main(String[] args)
    {
      string cmdpath = "d://Test/dist/EchoHi.exe";
      string arguments = "Mr.Cmd";
      Console.WriteLine(CallCMD(cmdpath, arguments));
    
    }
    public static string CallCMD(string _command, string _arguments){
      System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(_command, _arguments);
      psi.CreateNoWindow = true;
      psi.RedirectStandardOutput = true;
      psi.UseShellExecute = false;
      System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi);
      return(p.StandardOutput.ReadToEnd());
    }
}

特别需要注意的是:

命令参数是 arguments 内不能有多余空格,因为每个空格都会被识别为分割;
还要注意加一层转义,假执行命令为 EchoHi.exe Mr.\"Tree\" (Tree加了双引号)时,定义就应该为

string arguments = "\\\"Mr.Cmd\\\"";

此后编译运行即可。

4. 参考

[1] https://blog.csdn.net/qq_42063091/article/details/82418630

到此这篇关于C#调用Python程序传参数获得返回值的文章就介绍到这了,更多相关C#调用Python获得返回值内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C#调用Python程序传参数获得返回值

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C++ 函数调用函数指针:参数传递和返回值的回调机制

回答: 函数指针允许在运行时动态地调用函数,实现回调机制。参数传递: 函数指针可以作为参数传递给高阶函数,高阶函数对其进行调用并返回结果。返回值的回调机制: 函数可以返回函数指针,实现回调机制,使得一个函数可以作为另一个函数的返回值被传递。
C++ 函数调用函数指针:参数传递和返回值的回调机制
2024-05-02

C++ 函数调用 Lambda 表达式:参数传递和返回值的回调优化

在 c++++ 中,可以使用 lambda 表达式作为函数参数,实现回调函数的灵活性。具体而言:参数传递:通过 std::function 包装 lambda 表达式,以函数指针形式传递给函数。返回值处理:使用 std::function
C++ 函数调用 Lambda 表达式:参数传递和返回值的回调优化
2024-05-03

C++ 函数调用性能调优:参数传递和返回值的影响

c++++ 函数调用性能优化包括两方面:参数传递策略和返回值类型优化。参数传递方面,传递值适合小对象、不可修改参数,传递引用或指针则适合大对象、可修改参数,而传递指针速度最快。返回值优化方面,小型值可直接返回,大对象应返回引用或指针。选择合
C++ 函数调用性能调优:参数传递和返回值的影响
2024-05-04

关于python函数的建立、调用、传参、返回值详解

目录自定义函数调用函数函数参数的传递形参与实参位置参数函数返回值局部变量全局变量自定义函数Python 还支持自定义函数,即将一段有规律的、可重复使用的代码定义成函数,从而达到一次编写多 次调用的目的。 1.创建函数 创建函数也称为定义函
2023-08-08

C++ 函数调用优化:参数传递和返回值高效策略

c++++函数调用优化策略包括:1.参数传递:按引用传递以修改原值;2.const参数:防止参数修改,避免复制;3.返回值:按引用返回大型数据结构,节省拷贝开销;4.返回rvalue引用,避免不必要的复制。通过这些策略,可以优化函数调用性能
C++ 函数调用优化:参数传递和返回值高效策略
2024-04-30

C++ 函数调用调试技巧:参数传递和返回值的跟踪与调试

c++++ 函数调用调试技巧:参数传递:gdb 使用 call 命令,lldb 使用 expression 命令。返回值:gdb 使用 print 命令,lldb 使用 expr 命令。C++ 函数调用调试技巧:参数传递和返回值的跟踪与调试
C++ 函数调用调试技巧:参数传递和返回值的跟踪与调试
2024-05-05

C++ 函数调用泛型编程:参数传递和返回值的类型抽象

泛型编程可实现代码的类型抽象,包括参数传递和返回值类型抽象。参数传递抽象使用模板指定参数类型,如 template t sum(t a, t b),允许对不同类型进行求和。返回值抽象使用 auto 推断类型,如 template auto
C++ 函数调用泛型编程:参数传递和返回值的类型抽象
2024-05-03

C#调用EXE文件实现传参和获取返回结果

本文主要介绍了C#调用EXE文件实现传参和获取返回结果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-08

C++ 函数调用模版技术:参数传递和返回值的泛型化

c++++ 函数调用模版技术可通用化函数,包括参数传递和返回值。它通过使用 typename 定义模板参数来实现,允许传递任意数量和类型的参数,并将返回值泛型化。此技术提高代码可重用性、减少冗余、提高灵活性并提供类型安全性。C++ 函数调用
C++ 函数调用模版技术:参数传递和返回值的泛型化
2024-05-03

C++ 函数调用多线程考虑:参数传递和返回值的线程安全设计

多线程环境中调用函数的线程安全设计涉及参数传递和返回值。值传递和智能指针传递可确保线程安全。引用传递和引用返回需要线程同步来防止竞争条件。此外,线程局部变量、互斥量和条件变量也是保持线程安全性的重要技术。C++ 函数调用多线程考虑:参数传递
C++ 函数调用多线程考虑:参数传递和返回值的线程安全设计
2024-05-02

C++ 函数调用面向对象设计:参数传递和返回值的对象传递

在 c++++ 函数调用中,参数可以使用值传递(接收参数副本)或引用传递(接收对实际对象的引用)。返回值同样可通过值传递或引用传递。值传递会复制对象,而引用传递会传递对象的引用,从而影响实际对象。C++ 函数调用面向对象设计:参数传递和返回
C++ 函数调用面向对象设计:参数传递和返回值的对象传递
2024-04-30

C++ 函数调用反射技术:参数传递和返回值的动态访问

c++++ 函数调用反射技术允许在运行时动态获取函数的参数和返回值信息。使用 typeid(decltype(...)) 和 decltype(...) 表达式可获取参数和返回值类型信息。通过反射,我们可以动态调用函数,并根据运行时输入选择
C++ 函数调用反射技术:参数传递和返回值的动态访问
2024-05-05

C++ 函数调用内存管理:参数传递与返回值的内存开销

c++++ 函数调用涉及参数传递和返回值,会产生内存开销。参数传递按值或按引用进行,按值传递复制参数,按引用传递指向原始参数。返回值按值或按引用返回,按值返回保存返回值,按引用返回指向原始值。按引用传递和按引用返回的内存开销通常更小,因为它
C++ 函数调用内存管理:参数传递与返回值的内存开销
2024-04-30

C++ 函数调用文档生成:参数传递和返回值的自动生成

通过利用c++++反射机制,本文提供了一种自动化生成c++函数调用文档的解决方案,该解决方案可以从函数签名提取参数传递和返回值信息,并生成详细的markdown文档,其中包含函数参数(按值/引用传递)、返回值类型以及参数说明。C++ 函数调
C++ 函数调用文档生成:参数传递和返回值的自动生成
2024-05-03

C++ 函数调用预处理器宏:参数传递和返回值的高级用法

在 c++++ 中,预处理器宏可用于调用函数,涉及以下步骤:参数传递:宏参数用圆括号括起来,以逗号分隔。返回值:使用宏参数指定要返回的值,并赋值给变量。实战案例:通过使用宏优化查找数组中最大值索引的函数,减少了计算次数,提高了效率。C++
C++ 函数调用预处理器宏:参数传递和返回值的高级用法
2024-05-04

C++ 函数调用单元测试:参数传递和返回值的正确性验证

单元测试中验证 c++++ 函数调用时,需验证以下两点:参数传递:使用断言检查实际参数是否与预期值匹配。返回值:使用断言检查实际返回值是否等于预期值。C++ 函数调用单元测试:验证参数传递和返回值引言单元测试对于确保软件的正确性和可靠性
C++ 函数调用单元测试:参数传递和返回值的正确性验证
2024-05-01

C++ 函数调用异常处理:参数传递和返回值中的异常情况

摘要:函数调用中的异常处理涉及:参数传递异常:传递的参数引发异常时,异常传递给调用函数。返回值异常:函数通过返回值引发异常,直接传递给调用函数。实战示例:myclass::func() 函数参数为空字符串时抛出 std::invalid_a
C++ 函数调用异常处理:参数传递和返回值中的异常情况
2024-05-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录