从 C# .net 调用 python.py

2024-04-16

我在从 C# 调用 python 脚本时遇到问题。我的 python 脚本根据参数 1 和参数 2 计算一个值并发送计算出的值。我无法获得计算值。比如说,我正在使用一个简单的 python 类并调用 C#

以下是 python.py :

import argparse
class demo:

  def add(self,a,b):
     return a+b

def main(a,b):
 obj=demo()
 value=obj.add(a,b)
 print(value)
 return value

if __name__ == "__main__":
arg_parse = argparse.ArgumentParser()
arg_parse.add_argument("a")
arguments = arg_parse.parse_args()
main(arguments.a,3)

下面是调用它的 C# 代码。

Process p = new Process(); 
        int a = 2;
        p.StartInfo.FileName = "C:\\Users\\xyx\\AppData\\Local\\Programs\\Python\\Python36-32\\pythonw\\python.exe";
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.UseShellExecute = false; 
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.RedirectStandardError = true;
        p.StartInfo.CreateNoWindow = true;
        p.StartInfo.Arguments = "C:\\Users\\xyx\\AppData\\Local\\Programs\\Python\\Python36-32\\pythonw\\python.py "+a; parameter
        p.Start(); 
        StreamReader s = p.StandardOutput;
        standardError = s.ReadToEnd();
        output = s.ReadToEnd().Replace(Environment.NewLine, string.Empty); 

        p.WaitForExit();

由于 2,3 在 python 中被发送到 main(),所以我想要返回“5”。我不知道如何取回它。请帮忙


以下代码片段对我有用:C# code to call Python

using System;
using System.Diagnostics;
using System.IO;
namespace ScriptInterface
{
    public class ScriptRunner
    {
        //args separated by spaces
        public static string RunFromCmd(string rCodeFilePath, string args)
        {
            string file = rCodeFilePath;
            string result = string.Empty;

            try
            {

                var info = new ProcessStartInfo(@"C:\Users\xyz\AppData\Local\Programs\Python\Python37\python.exe");
                info.Arguments = rCodeFilePath + " " + args;

                info.RedirectStandardInput = false;
                info.RedirectStandardOutput = true;
                info.UseShellExecute = false;
                info.CreateNoWindow = true;

                using (var proc = new Process())
                {
                    proc.StartInfo = info;
                    proc.Start();
                    proc.WaitForExit();
                    if (proc.ExitCode == 0)
                    {
                        result = proc.StandardOutput.ReadToEnd();
                    }                    
                }
                return result;
            }
            catch (Exception ex)
            {
                throw new Exception("R Script failed: " + result, ex);
            }
        }
        public static void Main()
        {
            string args = "1 2";
            string res = ScriptRunner.RunFromCmd(@"your file path", args);

        }
    }

}

下面的 Python 代码接受两个输入并返回它们的总和:

import sys
def add_numbers(x,y):
   sum = x + y
   return sum

num1 = int(sys.argv[1])
num2 = int(sys.argv[2])

print(add_numbers(num1, num2))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 C# .net 调用 python.py 的相关文章

  • 在 C++ 中重用异常处理代码

    我有这两个函数 具有重复的异常处理 其唯一目的是显示错误消息 void func1 noexcept try do task do another task catch const std out of range e show msg O
  • Clang 使用 -nostdlib 生成崩溃代码

    我正在尝试为可执行文件设置自己的运行时环境 但无法使用 clang v3 4 1ubuntu1 目标 x86 64 pc linux gnu 来生成没有段错误的可执行文件 我已将问题简化为以下内容 如果我有一个文件 crt1 c 除了满足
  • C++ 中的静态虚函数

    我有一个基类和一个派生类 我想更改基函数 同时保持它们静态 因为它们应该作为静态传递给其他函数 我怎样才能做到这一点 ATL 框架通过将基类设为模板 然后让派生类将其类类型作为模板参数传递 从而绕过了无虚拟静态的限制 然后 基类可以在需要时
  • 如何对具有无效值的属性使用 JSON.net 的默认值

    我正在使用 Newtonsoft JSON 库来反序列化来自 Web 服务的响应 问题是某些字段包含无效值 例如 一条记录上的一个字段包含一个 T 表示该字段应该是数字 我想做的是将无效字段的值设置为 null 或其他默认值 我的所有属性都
  • 将 Matlab MEX 文件中的函数直接嵌入到 Python 中

    我正在使用专有的 Matlab MEX 文件在 Matlab 中导入一些仿真结果 当然没有可用的源代码 Matlab 的接口实际上非常简单 因为只有一个函数 返回一个 Matlab 结构体 我想知道是否有任何方法可以直接从Python调用M
  • 如何获取 TFS 2013 中所有用户的列表

    我正在使用 Team Foundation Server TFS 2013 和 Visual studio 2012 我需要 TFS 中所有用户的列表 有没有办法使用C 获取TFS中的所有用户 从TFS 2010获取用户列表 您可以尝试使用
  • pip:证书失败,但curl 有效

    我们在客户端安装了根证书 https 连接适用于curl 但如果我们尝试使用pip 它失败 Could not fetch URL https installserver 40443 pypi simple pep8 There was a
  • 为什么这是一个未定义的行为?

    我的回答这个问题 https stackoverflow com q 18706587 845092这个函数是 inline bool divisible15 unsigned int x 286331153 2 32 1 15 40086
  • 计算素数并附加到列表

    我最近开始尝试使用 python 解决 Euler 项目的问题 并且在尝试计算素数并将其附加到列表中时遇到了这个障碍 我编写了以下代码 但我很困惑为什么它在运行时不输出任何内容 import math primes def isPrime
  • LINQ 中的左外连接

    下面的代码不断给我一个错误消息 你调用的对象是空的 var partsWithDefaults from partsList1 in p join partsList2 in d on new PartNo partsList1 PartN
  • 宏中 do { } while(0) 与 ({ }) 的优点?

    Stack Overflow 上有很多关于使用的问题do while 0 在宏中 但这有点不同 我明白为什么do while 0 用于将多行代码包装在宏扩展中 但我经常看到另一种形式 The form 的优点是它是一个表达式并且可以有 返回
  • 使用本地系统帐户运行时,GetAccessControl 方法失败,出现意外错误代码 3

    我已经创建了 Windows 服务并使用本地系统帐户运行它 该服务正在读取用户文件并查找其所有者 在获取文件的访问权限以查找所有者时 它抛出以下异常 方法失败 出现意外错误代码 3 StackTrace 在 System Security
  • Tensorflow:提要字典错误:您必须为占位符张量提供值

    我有一个错误 我无法找出原因 这是代码 with tf Graph as default global step tf Variable 0 trainable False images tf placeholder tf float32
  • C# 中的自定义按钮:如何删除悬停背景?

    我正在尝试使用 Visual Studio 2005 对我的表单 其 FormBorderStyle none 执行自定义按钮 我在链接到该按钮的 ImageList 中有我的 3 种状态按钮图像 this btnClose AutoSiz
  • 使用 boto3 将 csv 文件保存到 s3

    我正在尝试写入 CSV 文件并将其保存到 s3 中的特定文件夹 存在 这是我的代码 from io import BytesIO import pandas as pd import boto3 s3 boto3 resource s3 d
  • 矩阵求逆 (3,3) python - 硬编码与 numpy.linalg.inv

    对于大量矩阵 我需要计算定义为的距离度量 尽管我确实知道强烈建议不要使用矩阵求逆 但我没有找到解决方法 因此 我尝试通过对矩阵求逆进行硬编码来提高性能 因为所有矩阵的大小均为 3 3 我预计这至少会是一个微小的改进 但事实并非如此 为什么
  • mypy 错误:赋值中的类型不兼容(表达式的类型为“Dict[, ]”,目标的类型为“List[str]”)

    我尝试过了实例化一个空字典在现有字典的第二层上 然后为其分配一个键值对 但 MyPy 会抛出错误 这是一个最小的示例 当激活 MyPy 检查时它将重现它 result Test something result key result key
  • 继承自 NumPy 数组的类如何更改其自身的值?

    我有一个继承自 NumPy n 维数组的简单类 我想要该类的两个方法可以更改该类实例的数组值 其中一种方法应将类实例的数组设置为类实例的列表数据属性的值 另一种方法应将一些列表值附加到类实例的数组中 我不确定如何实现这一点 但我的尝试如下
  • 虚拟键盘(类似 Swype 键盘)Windows 窗体应用程序 C#

    我正在尝试使用 c 在 Windows 窗体中创建一个类似 swype 的键盘 我有两个问题 A 我无法重现手指滑动动作 b 我无法识别不同按键下的字母 对于第一个问题 我使用了 Graphics 类和 Pen 类 并像这样使用它 bool
  • 如何为单个函数设置 ICC 属性“fp-model precision”,以防止关联优化?

    我正在实施卡汉求和 http en wikipedia org wiki Kahan summation algorithm 在支持 gcc47 gcc48 clang33 icc13 和 icc14 编译的项目中 作为该算法的一部分 我想

随机推荐

  • 在 Ruby On Rails 上学习 BDD 的途径是什么?

    我想在 Ruby On Rails 上启动 BDD 我应该学习什么 我对 BDD RSpec 或 Cucumber 一无所知 最好的学习方式是什么 教程 涵盖 我应该测试什么行为 之类的内容 ETC thanks RSpec 特定 我保留这
  • 有没有办法在 Chrome 和/或 IE 中使用 JS 选择多个文本区域?

    Firefox 3 可以使用 JS 选择多个文本区域 有没有办法在 Chrome 和 IE 中做到这一点 我真的试图找到一种方法来选择多个 Chrome 和 IE9 中网页中的文本区域 信息位于 http help dottoro com
  • TemplateResolver.set Order user 在 thymeleaf 中的作用是什么?

    我使用 Thymeleaf 作为我的电子邮件模板 并且通过谷歌搜索并能够使用以下配置成功运行代码 Configuration public class TemplateEngineConfig Autowired private MailC
  • 不使用“.Copy”+“.Paste”粘贴格式

    例如 rngTo Value rngFrom Value2 Works rngTo NumberFormat rngFrom NumberFormat Works rngTo Cells Interior ColorIndex rngFro
  • 为什么向字符串添加 null 是合法的?

    MSDN 文章关于字符串基础知识 http msdn microsoft com en us library ms228362 aspx显示这个 string str hello string nullStr null string emp
  • Laravel Eloquent 与 keyBy 建立关系

    我有一个Product模型与一个hasMany关系 public function pricing return this gt hasMany App ProductPrice prod id id 然后我得到了关系 Product wi
  • 如何在 Ionic 6/Capacitor 中使用不同的 admob 方法?

    我有一个离子标签栏组件 我想显示一个 BannerAd 我在我的离子应用程序中使用了以下库 https github com capacitor community admob https github com capacitor comm
  • 如何使用 matplotlib 一起绘制训练和测试图

    我正在尝试将 y train y test 然后 y train pred y test pred 一起绘制在一张图中 我使用以下代码来执行此操作 plot plt plot y test plt plot y pred plt plot
  • Google VR 视频无法加载

    我正在使用谷歌网页版 VR 视图 https developers google com vr concepts vrview web加载 360 度视频 但是当我加载视频时 它说错误 渲染 视频加载错误 对象事件 这是控制台显示的内容 当
  • 动画受面板限制

    有点难以描述 但我会尽力 我有一个带有图像和标签的控件 它需要有 2 个状态 大 和 小 在 大 状态下 图像应位于控件顶部中心 标签应位于下方中心 就像带有图像和标签停靠在顶部的停靠栏一样 在 小 状态下 图像应该较小并且位于控件的左上角
  • 无法在 std::variant 中采用相同类型

    我正在使用 c 17 并且想编写这样的代码 include
  • Magento 1.7.0.0 上的 SOAP V2 url 是什么

    1 7 0 0 版本中访问 Magento SOAP V2 的 url 是否已更改 当我尝试访问 上的服务 时http www somedomain com api v2 soap wsdl 1 http www somedomain co
  • 从 Web 服务下载文件 - 在 ASP.NET 站点中

    我想使用网络服务将文件从网站推送到浏览器 我当前正在将文件读入 base64 字节数组 并从 Web 服务返回该文件 这个网络服务是从网站调用的 我一直在思考如何将其作为原始文件推送到浏览器 理想情况下 我想将字节数组读入内存流 然后如果可
  • 当超过两次下载正在进行时 HttpSendRequest 阻塞

    在我们的程序中 每次需要发出HTTP请求时都会创建一个新线程 并且可以有多个线程同时运行 我遇到的问题是 如果我已经有两个线程正在运行 它们在读取时循环InternetReadFile 打电话后HttpSendRequest 任何后续尝试调
  • pandas.to_json 以特定形式输出日期格式

    数据框中日期的原始形式是 Date 2018 09 17 12 83 12 92 12 38 12 65 12 65 1937329 0 2018 09 10 12 92 13 12 12 81 12 83 12 83 1150470 0
  • C++ boost enable_if问题

    我有什么办法可以简化以下陈述吗 可能 使用boost enable if 我有一个简单的类结构 Base基类 Derived1 Derived2继承自Base 我有以下代码 template
  • 嵌套启动 --watch 更改后不重新加载(嵌套启动 --watch 不工作)

    我安装了 Nest js 当我运行 npm run start dev 运行 start watch 时 一切正常并且出现绿色日志 问题是 当我更新代码中的某些内容时 nest 不再更新 并且卡在下图中 我确信这不是我的代码的问题 因为我在
  • Dojo 拖放:如何检索项目的顺序?

    我创建了一个 Source 对象并进行配置 通过创建者 以便它呈现一组数据供我的用户根据需要进行排序 这一切工作正常 但是 我无法弄清楚如何在用户重新排序后检索数据 getAllNodes 返回 dom 节点 我需要原始数据对象 这真的很简
  • java - 文件lastModified与读取文件

    我正在使用一个文件 并且需要在修改文件时更新 java 中的值 所以 我想使用检查修改时间lastModified of File类 如果修改 则读取文件并更新文件中的单个属性 我的疑问是 是lastModified与从文件中读取单个属性
  • 从 C# .net 调用 python.py

    我在从 C 调用 python 脚本时遇到问题 我的 python 脚本根据参数 1 和参数 2 计算一个值并发送计算出的值 我无法获得计算值 比如说 我正在使用一个简单的 python 类并调用 C 以下是 python py impor